gibVerzeichnis() unter linux

Status
Nicht offen für weitere Antworten.

Bit2_Gosu

Bekanntes Mitglied
Hallo !

Ich hatte unter windows ein Java Programm erfolgreich laufen.

Unter der selben Entiwcklungsumgebung (Eclipse) unter linux läuft es nicht mehr.

Ich hab gehört, dass

Code:
gibVerzeichnis() + "/src/Data/auto.gif")
gibVerzeichnis() + "/src/Data/ampel"+i+".gif"

usw. dran schuld sind. Wie muss ich dass denn für linux umändern ??
 

sparrow

Top Contributor
Ein bisschen schwammig diese Aussage.

An sich ist es richtig, dass unter Linux die Pfade anders lauten als unter Windows. So gibt es unter Linux keine Laufwerksbuchstaben und die Trennung zwischen Verzeichnissen in Pfadnamen erfolgt durch einen Slash ( / ) und nicht durch einen Backslash ( \ ).
Es wäre aber gut wenn du uns sagen könntest wo genau der Fehler aufkommt, bzw. was es für Fehlermeldungen gibt. Aussagen wie "Ich habe gehört, dass" hilft leider nicht dem Problem auf die Spur zu kommen.


Gruß
Sparrow
 

Bit2_Gosu

Bekanntes Mitglied
Hi Sparrow !

Ok hier ein kleiner, wohl verantwortlicher, Teil des source codes:


Code:
public Dateien()
{
        try
        {
                for (int i=0; i<4; i++)
                {
                        farbe[i] = ImageIO.read(new File(gibVerzeichnis() + "/src/Data/ampel"+i+".gif"
                 }
		    
                 auto = ImageIO.read(new File(gibVerzeichnis() + "/src/Data/auto.gif"));	    

                 radar = ImageIO.read(new File(gibVerzeichnis() + "/src/Data/radar1.gif"));	    	    
         }
        catch (IOException e)
        {       
               
                e.printStackTrace();
        }
	bA = auto.getWidth(null);	  <--------    40
	hA = auto.getHeight(null);	
}
    
    
    public String gibVerzeichnis() throws IOException
    {
	File f = new File(".");		    //neuer lehrer Pfad
	return f.getCanonicalPath();	    //gebe den Pfad des Klassenordners zurck
    }


beim compilen ist alles fitt. beim laufen lassen:

Exception in thread "main" java.lang.NullPointerException
at src.ampelsystem.Dateien.<init>(Dateien.java:40) siehe oben
at src.ampelsystem.Computer.<init>(Computer.java:65) heißt: DATA = new Dateien();
at src.ampelsystem.Main.main(Main.java:21)


Gruss Richard
 

sparrow

Top Contributor
Änder den Code mal wie folgt :


Code:
public Dateien()
{
        try
        {
                for (int i=0; i<4; i++)
                {
                        farbe[i] = ImageIO.read(this.getClass().getResource("src/Data/ampel"+i+".gif"));
                 }
         
                 auto = ImageIO.read(this.getClass().getResource("src/Data/auto.gif"));      

                 radar = ImageIO.read(this.getClass().getResource("src/Data/radar1.gif"));             
         }
        catch (IOException e)
        {       
               
                e.printStackTrace();
        }
   bA = auto.getWidth(null);
   hA = auto.getHeight(null);   
}


Ich hoffe ich hab mich nirgends verschrieben.
Das sollte eigentlich gehen.

Und wenn es das tut sag ich dir auch geschwind warum :)
 

Bit2_Gosu

Bekanntes Mitglied
Hm danke aber leider klappts noch net :?

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1354)
at src.ampelsystem.Dateien.<init>(Dateien.java:27)
at src.ampelsystem.Computer.<init>(Computer.java:65)
at src.ampelsystem.Main.main(Main.java:21)



Dateien.java:27
Code:
farbe[i] = ImageIO.read(this.getClass().getResource("src/Data/ampel"+i+".gif"));

Verzwickt, verzwickt , was ? :wink:

Gruss Richard
 

Murray

Top Contributor
Nur damit nicht an der falschen Stelle gesucht wird: Datei- und Verzeichnisnamen sind unter Linux case-sensitive, was bei Windows nicht der Fall ist. Stimmt der Pfad im Programmcode auch bzgl. Groß-/Kleinschreibung mit dem überein, was unter Linux mit ls ausgegeben wird?
 

sparrow

Top Contributor
Hallo Murray, schön mal wieder von dir zu lesen :)


Und Murray hat völlig Recht, unter Linux sind Pfadangaben case-sensitive. Das heißt es kann in ein und demselben Verzeichnis die Datei Test.txt und test.txt geben. Unter Windows ist das nicht möglich. Du mußt also unbedingt darauf achten, dass die Groß- und Kleinschreibung stimmt.

Des weiteren ändern wir ja gerade die Art in der du Grafiken lädst. Bisher hast du sie direkt aus dem Dateisystem geladen, damit bekommst du später Schwierigkeiten sobald du dein Programm als .jar-Archiv ausliefern möchtest. Dann leigen die Dateien nicht mehr im normalen Dateisystem sondern in diesem Archiv. Das ist aber nicht weiter schlimm, Java macht es dir sogar besonders einfach dann diese Dateien zu nutzen.
Sogenannte "Resourcen", also alles das an deinem Programm was hinterher keine Class-Datei wird, lädst du wie oben beschrieben. Der Rückgabewert von Class.getResource(String) ist eine Klasse vom Typ URL die du überall dort einsetzen kannst wo statt eines Files auch eine URL verwendet werden kann. Bei ImageIO.read(URL) ist das so.

Die von dir angegebene Fehlermeldung bedeutet, dass an der entsprechenden Stelle keine Datei gefunden wurde. Die Methode gibVerzeichnis() verwenden wir an dieser Stelle bereits nicht mehr, wie dir sicher aufgefallen ist.
Um zu sehen wie genau der String lautet musst du dir den Verzeichnisbaum denes Projektes ansehen, und zwar ausgehend von der Klasse in der du das oben beschriebene angibst.

Nehmen wir an du hast eine Klasse A, und in dem selben Verzeichnis wie Klasse A liegt ein Bild namens test.gif und du möchtest das Bild laden, so heßt der Befehl:
Code:
ImageIO.read(this.getClass().getResource("test.gif));
Befindet sich test.gif aber in einem Unterodner "ordner" von dem Ordner in dem Klasse A liegt so lautet der Befehl:
Code:
ImageIO.read(this.getClass().getResource("ordner/test.gif));

Du müsstest also prüfen ob sich die Dateien die du laden möchtest wirklich im Unterordner /src/Data liegen.
Vom Gefühl her würde ich sagen: Es dürfte so sein, dass es den Unterordner /src nicht gibt weil die Klassen bereits darin liegen (falls du /src und /bin nicht getrennt hast). Das heisst ausgehend von der Klasse gibt es nur noch /Data

Versuch also einmal das ganze ohne src:

Code:
public Dateien()
{
        try
        {
                for (int i=0; i<4; i++)
                {
                        farbe[i] = ImageIO.read(this.getClass().getResource("Data/ampel"+i+".gif"));
                 }
         
                 auto = ImageIO.read(this.getClass().getResource("Data/auto.gif"));     

                 radar = ImageIO.read(this.getClass().getResource("Data/radar1.gif"));             
         }
        catch (IOException e)
        {       
               
                e.printStackTrace();
        }
   bA = auto.getWidth(null);
   hA = auto.getHeight(null);   
}
 

Bit2_Gosu

Bekanntes Mitglied
Hm vielen Dank für deine Mühe. Jetzt versteh ich die HIntergründe auch schon besser !

Und es klappt !!!!!!!!!! :D

nur das /src... war schon ok


fettes DANKE !! :wink:
 

Murray

Top Contributor
Hast Du schon versucht, den ersten Slash in den Pfaden wegzulassen?
[EDIT: Oops, hier stand doch eben noch der geänderte Code zusammen mit der Aussage, dass es noch nicht funktioniert]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Java unter Win 10 Allgemeine Java-Themen 1
M Eclipse unter Linux Lite Allgemeine Java-Themen 2
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
MarekLanger Filebeat in Docker unter Windows Allgemeine Java-Themen 1
H Java SDK unter 32 Bit Allgemeine Java-Themen 5
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
L Tesseract-OCR 4.0 unter Linux funktioniert nicht Allgemeine Java-Themen 3
J Wie konkret funktioniert das Modulsystem unter Java 11? Allgemeine Java-Themen 4
J jar Dateien unter Windows 7 mit spezifischer jdk öffnen Allgemeine Java-Themen 2
I GUI für kleine Pop-Ups unter Windows Allgemeine Java-Themen 1
H Änderung im maximalen heap space unter Windows 7 ?! Allgemeine Java-Themen 5
E Erfahrungen mit Java/JS Bridge unter nodejs und NodeJS/C++ Bridge Allgemeine Java-Themen 0
Neumi5694 Task-Name unter Windows Allgemeine Java-Themen 4
T PDF-Generierung (itext) - läuft unter Eclipse, bei har aber leere Seite Allgemeine Java-Themen 39
S Korrekte Pfadangaben damit eine .jar Datei unter Windwos läuft. Allgemeine Java-Themen 24
K USB infos unter Linux abfragen? Allgemeine Java-Themen 2
K jar-Datei lässt sich unter Windows nicht verwenden Allgemeine Java-Themen 3
N Lizenzensierung von Java Programmen unter Linux Allgemeine Java-Themen 3
H Summe aller Vielfachen von 3 oder 5 unter 1000. Allgemeine Java-Themen 7
krgewb LookAndFeel unter Mac OS Allgemeine Java-Themen 1
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
D JRE in .jar verpacken unter Windows Allgemeine Java-Themen 4
D Aktuell installierte Java Version auslesen unter Windows Allgemeine Java-Themen 5
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
S Executable Jar File startet nicht unter Windows 10 Allgemeine Java-Themen 3
C Windows RCP Application unter Linux bauen lassen Allgemeine Java-Themen 3
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
E Anwendung verhält sich unter Mac anders als Unter Windows. Allgemeine Java-Themen 4
F URI-Scheme mit Java unter MacOS erstellen? Allgemeine Java-Themen 0
E Drucken einer Pdf Datei unter Java. Allgemeine Java-Themen 1
E Sonderzeichen nicht setzbar: Großes Problem bei Programmierung unter Linux Mint mit Virtual Box Allgemeine Java-Themen 5
F Mencoder unter Java Ausführen Allgemeine Java-Themen 0
G Methoden HashMap speichert unter falschen Schlüsseln Allgemeine Java-Themen 6
G IR Fernbedienung unter Java Allgemeine Java-Themen 0
G Wie installiere ich javax-usb unter windows? Allgemeine Java-Themen 0
S JAAS unter Ubuntu? Allgemeine Java-Themen 0
J Compiler-Fehler Compiliert unter Eclipse aber nicht mit javac Allgemeine Java-Themen 0
M Code läuft unter windows aber nicht unter Linux Allgemeine Java-Themen 6
Guybrush Threepwood Kein user.home unter Windows8 Allgemeine Java-Themen 7
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4
R Java-Progamm über Icon starten unter Windows Allgemeine Java-Themen 9
C JasperReports, PDF und "Speichern unter"-Dialog Allgemeine Java-Themen 7
P Eclipse Unter Windows erstelle .jar unter Linux (Ubuntu) funktioniert nicht Allgemeine Java-Themen 5
R ZIP FileSystem unter Windows wirft exception Allgemeine Java-Themen 7
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
G RXTX native library unter Linux in jar build angeben Allgemeine Java-Themen 4
C Darstellungsproblem unter Debian und OpenJDK Allgemeine Java-Themen 5
R Umlautproblem unter Linux Allgemeine Java-Themen 10
C derby db unter mac os Allgemeine Java-Themen 8
B File Seperator unter verschiedenen OS Allgemeine Java-Themen 2
T Jar File läuft unter Windows aber nicht unter linux Allgemeine Java-Themen 10
B Methode läuft nicht unter UNIX Allgemeine Java-Themen 6
F Process.getInputStream unter Linux Allgemeine Java-Themen 7
S Java-Installation unter Sun OS Allgemeine Java-Themen 3
K Xattr Mac unter Java ansprechen Allgemeine Java-Themen 17
D Clipboard getSystemSelection() funktioniert unter Windows* nicht Allgemeine Java-Themen 3
M Nach Programmdurchlauf werden Zeichen falsch dargestellt + Anderes Verhalten unter Windows Allgemeine Java-Themen 6
L Sicherstellen das 2x die gleichen Daten unter bestimmten Keys enthalten sind. Allgemeine Java-Themen 6
T Javaprogramm unter Linux auf bestimmten Kern starten/laufen lassen ? Allgemeine Java-Themen 22
J Path-Eintrag unter Windows 7 Allgemeine Java-Themen 11
F Eclipse JAVAMAIL läuft nur unter Eclipste Applet Viewer Allgemeine Java-Themen 4
C .jar unter Windows7 über den Explorer starten Allgemeine Java-Themen 6
S (Doppel)Klick-Verhalten vom Desktop unter Java imitieren. Allgemeine Java-Themen 5
Z Probleme mit Java unter Vista/ Windows 7 Allgemeine Java-Themen 12
M Realisierung einer dynamischen Tabelle unter Android Allgemeine Java-Themen 3
C Datei auslesen wie unter Linux mit "tail -f" Allgemeine Java-Themen 3
J Java-Datei unter Mac OS X öffnen - eine Frage der Klasse Allgemeine Java-Themen 2
G Textdatei einlesen unter Windows 7 Allgemeine Java-Themen 4
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
H String spliten unter berücksichigung von " und \" Allgemeine Java-Themen 7
V linuxprogramm unter java aufrufen??? Allgemeine Java-Themen 4
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
N JAR Datei ausführen unter Angabe einer speziellen Klasse Allgemeine Java-Themen 2
J Eclipse unter Windows 7 Allgemeine Java-Themen 5
T Pfad Anwendungsdaten unter Windows ermitteln Allgemeine Java-Themen 3
B Java Applet unter Mac wird nicht angezeigt Allgemeine Java-Themen 6
A CLASSPATH unter Debian Lenny Allgemeine Java-Themen 4
A Umgebungsvariable unter Windows Vista setzen Allgemeine Java-Themen 60
M Log4J funktioniert nicht unter anderem Benutzer Allgemeine Java-Themen 5
E Alle unter Prozesse der beim schließen mit schließen Allgemeine Java-Themen 3
J dialogys unter linux Allgemeine Java-Themen 4
S Problem beim Drucken auf Netzwerkdrucker unter Linux Allgemeine Java-Themen 9
R Sound unter Java Allgemeine Java-Themen 12
I Fehler unter 64Bit JDK Allgemeine Java-Themen 4
S Jar und Exe verhalten sich unterschiedlich unter Vista Allgemeine Java-Themen 8
D Botschaftssendung unter Klassen Allgemeine Java-Themen 4
H JDIC unter 1.5 Allgemeine Java-Themen 2
G Generics - W.card unter Nutzung von Annotationsklasse? Allgemeine Java-Themen 6
B Frage zu Sichtbarkeit in (Unter)Paketen Allgemeine Java-Themen 9
F Document öffnen unter Linux Allgemeine Java-Themen 4
0 kein Java unter Server 2008 ? Allgemeine Java-Themen 3
J Runtime.exec unter win vista? Allgemeine Java-Themen 10
S unter UNIX - (symbolic) links erkennen? Allgemeine Java-Themen 12
L dateizugriff unter windows nicht behindern Allgemeine Java-Themen 2
W Deployment unter Linux Allgemeine Java-Themen 17
M Drag and Drop FileListFlavor unter Ubuntu - Nautilus Allgemeine Java-Themen 5
F Hilfe beim Starten einer Java Anwendung unter Windows gesuch Allgemeine Java-Themen 8
L Java 1.5 - Anwendung unter 1.6 JRE sehr langsam geworden Allgemeine Java-Themen 8
P JUnit unter Eclipse: Problem mit Exception Allgemeine Java-Themen 8
G Problem mit Serialisiertem Objekt (unter Objekte fehlen?) Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben