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

Diskutiere Java findet plötzlich die Dateien im Projekt nicht mehr. im Java Basics - Anfänger-Themen Bereich.
J

Joob

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.
 
H

httpdigest

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.
 
J

Joob

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 ?
 
J

Joob

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.
 
J

Joob

Kann man das einfach machen, ohne das gradle das wieder entfernt ?
 
J

Joob

Wie cool, das habe ich die ganze Zeit von der Projektsicht versucht, ist aber nur Müll bei rausgekommen.
Schönen Dank.
 
J

Joob

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
 
mrBrown

mrBrown

Liegt an den Pfaden, die du angibst :)

mit getClassloader geht es direkt von resources aus, mit getClass geht es vom aktuellem Package aus.
 
J

Joob

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
 
mrBrown

mrBrown

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 "'.'"
 
J

Joob

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.
 
Thema: 

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

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben