Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
1. was ist in IntelliJ nochmal der Source Folder, wo man Grafiken etc. ablegt?
intuitiv habe ich resource bundle gewählt, allerdings kommt da nicht raus was ich erwartet habe...
2. Beim snippet werden lediglich die bools und die Konstante gehighlightet ( und new ) sonst nix, warum ist das nochmal so?
Java:
import javax.swing.JFrame;
//...
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setResizable(false);
window.setTitle("Test");
GamePanel gamePanel = new GamePanel();
window.add(gamePanel);
1. was ist in IntelliJ nochmal der Source Folder, wo man Grafiken etc. ablegt?
intuitiv habe ich resource bundle gewählt, allerdings kommt da nicht raus was ich erwartet habe...
src/main/resources sollte der Standardordner sein. Fehlt dir dieser, dann rechter Mausklick auf das Project, dann New/Directory und dir werden dann die Standardverzeichnisse zur Auswahl angezeigt.
Mhh, leider nicht. Über Project -> New -> Directory kann ich nur ein neues Directory anlegen.
Darüberhinaus will ich auch in einem package ein source folder anlegen und da die .png parken, wie wäre das denn möglich?
Hm, dann lege dir einfach einen Ordner mit dem Namen resources unter src/main an. Standard ist - soweit ich weiß - eigentlich immer die Ordnerstruktur die das Buildtool Maven vorgibt. Auch für Projekte, die selbst nicht Maven nutzen.
Möglich ist eine ganze Menge und sinnvoll ist es, meiner Ansicht nach, sich an Standards und Konventionen zu halten.
Klar, die Methodemain in der Klasse App ist völlig ok. Der Ordner main hat ja rein gar nichts mit der Methode gleichen Namens zu tun.
Die packages mit dem sourcecode legt man eigentlich im Order src/main/java/ an. Wenn du das aber partout so nicht möchtest, dann lege die packages dort an wo du magst.
Und ja, du kannst in ein package auch Bilder, Musikdateien oder Exceldokumente packen. Allerdings gibt es nicht ohne Grund Konventionen, die sich in grauer Vorzeit wirklich kundige Menschen mal ausgedacht haben.
Quintessenz: solange der Compiler nicht meckert, kannst du machen was du willst, egal wie sinnvoll das ist.
Ich bin ja was die Conventionen angeht ganz bei dir. Allerdings kommt mir das ein bisschen IDE spezifisch vor. Die Frage ist: meinst du mit Ordner main ein package oder ein directory? Ich habe nur die Main Klasse gelöscht und es gab nie einen Ordner main.
Der Punkt ist, ich ziehe gerade mit dem Projekt von Eclipse zu IntelliJ um und in Eclipse gibt es source folder wo man so was reinpackt und für mich ist ein package irgendwie kein Equivalent dafür und ich finde auch so kein anderes, außer das von dir beschriebene src/main/resources was es aber nicht gibt und nicht wiederherstellbar ist.
Ich bin ja was die Conventionen angeht ganz bei dir. Allerdings kommt mir das ein bisschen IDE spezifisch vor. Die Frage ist: meinst du mit Ordner main ein package oder ein directory? Ich habe nur die Main Klasse gelöscht und es gab nie einen Ordner main.
Der Punkt ist, ich ziehe gerade mit dem Projekt von Eclipse zu IntelliJ um und in Eclipse gibt es source folder wo man so was reinpackt und für mich ist ein package irgendwie kein Equivalent dafür und ich finde auch so kein anderes, außer das von dir beschriebene src/main/resources was es aber nicht gibt und nicht wiederherstellbar ist.
Die IDE ist ansich völlig egal. Die Maven Konvention ist völlig unabhängig von Eclipse, IntellijIDEA oder was auch immer. Und wenn die Folder nicht vorhanden waren, kannst du sie einfach selber anlegen. Es sind nur Ordner um dein Projekt zu strukturieren.
Wie genau du dein Project in IntelliJ angelegt hast, weiß ich ja gar nicht. Es gibt da ja viele Varianten. Ein leeres Project, ein Template, ein Maven Project etc.
Ich persönlich erstelle immer ein Maven Project, da kann ich dann sofort loslegen.
Also IntelliJ kann mit diversen Projekten umgehen. Da ist dann immer die Frage, was für ein Projekt Du hast.
Bei Maven und Gradle sind die Verzeichnis überlicherweise:
src/main/java für Java Sourcen
src/main/resources für Ressourcen wie Bilder und so
Bei Eclipse Projekten (die kann man nicht erzeugen, aber IntelliJ kann diese erzeugen) liegt alles in src: Sourcen und Ressourcen sind hier alle zusammen.
Die typischen IntelliJ Projekte haben keine festen Vorgaben. Beim erzeugen wird ein Verzeichnis src erzeugt und als Source Verzeichnis markiert.
Das Prinzip ist also, dass man beliebige Verzeichnis als spezielles Verzeichnis markiert.
Daher kannst Du Dir nun überlegen, wo Du Ressourcen ablegen willst. Das kann ein beliebiges Verzeichnis sein.
Im Project Fenster einfach Rechtsklick auf das Verzeichnis und dann Mark Directory as -> Resources Root
Das geht aber nur, wenn es noch nicht markiert ist! Ansonsten wird die bisherige Markierung gelöscht und die letzte genommen.
Generell ist meine Empfehlung, auf Maven oder Gradle zu setzen. Das hat den großen Charm, dass man Einstellungen problemlos teilen kann. Bei Problemen ist es halt einfacher, die pom.xml weiter zu geben als in vielen Fenstern die Einstellungen zusammen zu suchen.
Ich habe jetzt nochmal auf maven umgestellt. Und die von @Hansen_07 beschrieben Ordnerstrukuren sind jetzt da! Yeah!
Jetzt habe ich allerdings immernoch das Problem, was mich eigentlich zum Post geführt hat ( ich hoffe des sprengt nicht den Rahmen des Threat ),
lädt es die Grafik dennoch nicht, weil es scheinbar " null " zurück gibt. Was komisch ist, weil es unter Eclipse funktioniert hat.
Code:
public BufferedImage test;
test = ImageIO.read(getClass().getResourceAsStream("test.png"));
Vermutlich ist die Klasse in einem Package. Wenn Du eine Klasse in einem Package a.b hast, dann wird relativ vom Verzeichnis a/b aus gesucht. Statt einer relativen Angabe kannst Du eine absolute machen und den Pfad ab dem Ressource Ordner angeben: ImageIO.read(getClass().getResourceAsStream("/test.png"));
Sorry, aber irgend etwas stimmt nicht. Wie der Code aussehen muss, habe ich klar gesagt. Was Du da mit "copy path" versucht hast, erschließt sich mir nicht, denn es ist kein Pfad zu kopieren oder anzugeben.
Wenn es nicht geht, dann besteht die Möglichkeit, dass die Datei anders heisst. Oder es ist irgend etwas anderes nicht stimmig. Aber ohne genaue Informationen können wir nicht sagen, was falsch ist. Ich kann nur sagen, wie es gehen würde.
habe ich versucht. Die Benennungen stimmen soweit alle.
ich habe jetzt mal den hint von IntelliJ genutzt und
Java:
test = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/test.png")));
versucht. Das funktioniert. Aber ist ja nicht wirklich sauber oder?
Was werden denn noch für Infos gebraucht?
Mit copy path wollte ich nur verdeutlichen, dass es an der Schreibweise nicht liegen kann, weil ich sie aus dem resources, wo die .png liegt kopiert habe.
Ok, das wird diese Funktionalität "Copy Path/Reference" im Kontextmenü gewesen sein ... dann ist der Dateiname richtig.
Wie startest Du es? Ggf. mal mit maven richtig bauen lassen (also ein mvn clean package oder so).
Wenn es aus IntelliJ gestartet wird: Ist der resource Order in IntelliJ auch als Resource Ordner gekennzeichnet (Da hat der Ordner so im Symbol unten rechts noch orangene Linien als Stapel im Symbol ...) - Nicht dass IntelliJ da das Maven Projekt nicht richtig interpretiert hat. Da hilft ggf. auch ein Rechtsklick auf das Projekt mit Auswahl Maven -> Reload Project
Oder mach mal ein Bildschirmfoto, dass Dein IntelliJ zeigt mit Project Fenster, dem Code, der Fehlermeldung und so ...
Moment - was funktioniert? Das macht ja nichts, außer auf Null zu prüfen. Dann wird die NPE halt von Objects.requireNonNull geworfen.
Wenn das mit dem Objects,requireNonNull funktioniert, dann funktioniert es auch ohne. Dann hast Du beim Ausprobieren nur etwas falsch gemacht und Dich irgendwo vertippt.
Moment - was funktioniert? Das macht ja nichts, außer auf Null zu prüfen. Dann wird die NPE halt von Objects.requireNonNull geworfen.
Wenn das mit dem Objects,requireNonNull funktioniert, dann funktioniert es auch ohne. Dann hast Du beim Ausprobieren nur etwas falsch gemacht und Dich irgendwo vertippt.
Ich bin dahingehend ratlos.
Die .png ist in besagten Ordner mit dem Linien Stapel.
Ich habe lediglich den Vorschlag von IntelliJ benutzt und jetzt wird es geladen.