Java findet plötzlich die Dateien im Projekt nicht mehr.

Ich versuche gerade auf Grale umzustellen.
Das sollte aber doch nichts damit zu tun haben wie Java eine Datei auswählt.

Leider finde ich die Datei nicht mehr .
Kennt jemand den Grund ?

12454

Ich hoffe das Bild sagt was, eigentlich müßte man hier alles auf einen Blick sehen.
 
Das sollte aber doch nichts damit zu tun haben wie Java eine Datei auswählt.
Doch, das hat damit was zu tun. Du lädst die Datei nicht direkt aus dem Dateisystem, sondern aus dem Classpath per Class.getResource(). Und in einem Standard Maven/Gradle Projekt ist der Classpath Root nicht das Projekt Root Verzeichnis /. Das ist er eigentlich niemals, in keiner IDE und in keinem Buildsystem und ich bezweifle, dass das so jemals geklappt hat. Du willst wahrscheinlich eher den Pfad "/org/joobsoft/vtadm/DATA/DATAACC_IO.TXT" verwenden, wenn das eine Classpath-Ressource ist. Auch werden Ressourcen nicht innerhalb des src/main/java Ordners hinterlegt, sondern in separaten Ressourcen-Ordnern, z.B. src/main/resources.
 
Die Verzeichnissstruktur hat das Gradle Projekt von sich aus gemacht.
Ich hab mal mit Android Studio programmiert, da gab es in der Standardprojekt Struktur ein Resourcenverzeichnis.

Bei netbeans gradle hat es das nicht gegeben.
Und da ich das Projekt mit Daten aus einem ANT Projekt in der Projektsicht gefüllt habe, habe ich erst später nachgesehen
wo die Dateien geblieben sind. Deshalb das Bild da, sieht man das gradle die beiden Bäume aufgebaut hat.

Der Sinn ist mir aber unklar.

Was müßte ich jetzt tun um da Klarheit in das Projekt zu bekommen ?
 
Die Verzeichnissstruktur hat das Gradle Projekt von sich aus gemacht.
Ich hab mal mit Android Studio programmiert, da gab es in der Standardprojekt Struktur ein Resourcenverzeichnis.

Bei netbeans gradle hat es das nicht gegeben.
Und da ich das Projekt mit Daten aus einem ANT Projekt in der Projektsicht gefüllt habe, habe ich erst später nachgesehen
wo die Dateien geblieben sind. Deshalb das Bild da, sieht man das gradle die beiden Bäume aufgebaut hat.

Der Sinn ist mir aber unklar.

Was müßte ich jetzt tun um da Klarheit in das Projekt zu bekommen ?
Ach so, deinen Vorschlag hinsichtlich des Pfades habe ich natürlich anfangs verwendet, nur hat das genauso wenig hingehauen. Deshalb habe ich mir die Filestruktur angesehen und gedacht, wenn ich / vor dem Pfad setze fängt er im root und ich kann die Datei über den Screenpfad erreichen.
 
Wie cool, das habe ich die ganze Zeit von der Projektsicht versucht, ist aber nur Müll bei rausgekommen.
Schönen Dank.
 
Hallo,

nichts ging, bis ich classloader verwendete, aber kann mir das einer erklären ?

String accfile = "data/DATAACC.TXT";
URL dataURL = ClassLoader.getSystemClassLoader().getResource(accfile);

bei dieser Projektstruktur.
12456
 
Liegt an den Pfaden, die du angibst :)

mit getClassloader geht es direkt von resources aus, mit getClass geht es vom aktuellem Package aus.
 
Aber mit getClass hat keine Variante geklappt und ich hab viele ausprobiert.

Woher weiß getClassloader denn was resources sind, ist resources ein definierter Begriff im Projekt
 
Aber mit getClass hat keine Variante geklappt und ich hab viele ausprobiert.
Welche hast du denn ausprobiert? :) In dem Fall wäre /data/DATAACC.TXT passend.

Woher weiß getClassloader denn was resources sind, ist resources ein definierter Begriff im Projekt
Alles was in resources ist, landet so in der Jar, den Resources-Ordner selber gibt es dann nicht mehr. Von der Klasse aus ist das eben '/', vom Classloader aus "'.'"
 
Ich bin davon ausgegangen das ich mit getClass vom root des Projektes ausgehen muss.
Deshalb habe ich /src..., src.., ./src.., und dann bin ich im Pfad weiter runtergegangen, aber offensichtlich nicht bis data.

Deine Lösung haut aber hin. Erst einmal danke dafür !

Was ich noch nicht verstehe ist warum getClass().getResoruces(Filename) dann auf dem resources-Ordner und nicht irgendwo anders im Projekt landet.

Nur damit ich das Hinsichtlich der Verwendung des resource-Ordners nicht falsch verstehe:
der resource-Ordner hat doch unter dem Gesichtspunkt der Übersichtlichkeit im Projekt die Aufgabe Dateien aufzunehmen die keinen java - Code enthalten, also zum Beispiel auch fxml oder anderer xmls oder img oder txt, also Dateien die nicht kompeliert werden, sondern unverändert in der jar aufgenommen werden.

Wenn ich dort Dateien .java hineinlege, werden diese nicht kompeliert und liegen in der Jar als .java rum und ich könnte Sie ggf. später kompelieren oder auch noch editieren bevor ich Sie kompeliere oder einfach in der Jar austauschen ?

Ich mach mir nur deshalb Gedanken, weil der Begriff classloader sowas bedeuten könnte, denn ich lade ja in der Regel andere Dateien.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben