Maven Files mit Jlink Image

Nilsy8214

Aktives Mitglied
Ich habe ein Maven Projekt das auf Files zugreift das Funktioniert auch in der Entwicklungsumgebung aber wenn ich mit Jlink ein Image mache und es dann über die .bat aufrufe geht es nicht und ich vermute das es daran liegt das die File Pfade nicht mehr stimmen jedoch weiß ich nicht wie ich das fixen kann
 
Gehts um Ressourcen, die Du lädst?
Naja ich habs ein bisschen schlecht beschrieben aber ja. Das ist halt ein Programm zum Vokabeln lernen und dafür muss man diese Vokabeln ja speichern das hab ich halt einfach mit einer .txt gemacht in der entwicklungs umgebeung hsb ich das so (Bild).
Wenn ich dann ein Jlink Image mache startet das einfach nicht und weil das jetzt hier mit datein ist und das ohne (in einem anderem Projekt) ging denke ich das es daran liegt



Lessons.txt ist wie die unterschiedlichen Lektionen heißen
LessonsId.txt ist um die zu indetifizieren
in Vokab sind dann die Vokabeln
 

Anhänge

  • lökjhugzftdsarftgzhuji8ou8io87u9o.PNG
    lökjhugzftdsarftgzhuji8ou8io87u9o.PNG
    5,4 KB · Aufrufe: 2
OK, Du lädst die Ressource aus dem Dateisystem, das funktioniert so nicht.

Verwende stattdessen new Scanner(getClass().getResourceAsStream("Vokab/" + id + ".txt")); (wenn Du in einer statischen Mehode bist, musst Du getClass() durch den Klassennamen gefolgt von .class ersetzen).
 
das geht dann nicht da kommt dann das

[CODE lang="java" highlight="22"]Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NullPointerException
at java.base/java.io.Reader.<init>(Reader.java:168)
at java.base/java.io.InputStreamReader.<init>(InputStreamReader.java:76)
at java.base/java.util.Scanner.<init>(Scanner.java:566)
at Main@1.0-SNAPSHOT/org.openjfx.Main.start(Main.java:195)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:474)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:447)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:446)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more
Exception running application org.openjfx.Main[/CODE]
 
das geht dann nicht da kommt dann das

[CODE lang="java" highlight="22"]Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NullPointerException
at java.base/java.io.Reader.<init>(Reader.java:168)
at java.base/java.io.InputStreamReader.<init>(InputStreamReader.java:76)
at java.base/java.util.Scanner.<init>(Scanner.java:566)
at Main@1.0-SNAPSHOT/org.openjfx.Main.start(Main.java:195)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:474)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:447)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:446)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more
Exception running application org.openjfx.Main[/CODE]
Also wenn ich das dann normal rune
 
das geht dann nicht da kommt dann das

[CODE lang="java" highlight="22"]Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NullPointerException
at java.base/java.io.Reader.<init>(Reader.java:168)
at java.base/java.io.InputStreamReader.<init>(InputStreamReader.java:76)
at java.base/java.util.Scanner.<init>(Scanner.java:566)
at Main@1.0-SNAPSHOT/org.openjfx.Main.start(Main.java:195)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:474)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:447)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:446)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more
Exception running application org.openjfx.Main[/CODE]
geht doch bin nur dumm
 
Nein, das geht nicht, eine Ressource ist nur lesbar. Du kannst die Ressource natürlich auf die Platte schreiben bzw. zum Initialisieren einer Vokabellliste, die im Dateisystem oder eine Datenbank verwaltet wird, verwenden.
 
Nein, das geht nicht, eine Ressource ist nur lesbar. Du kannst die Ressource natürlich auf die Platte schreiben bzw. zum Initialisieren einer Vokabellliste, die im Dateisystem oder eine Datenbank verwaltet wird, verwenden.
Ok ich habe jetzt gestern und heute versucht was zu deinem Kommentar zu finden (also wie ich das bei mir umsetzten könnte) aber ich habe nichts wirklich hilfreiches gefunden könntest du das also etwas genauer erklären also wie genau ich etwas speichern muss und wie ich dann im src code das schreiben muss damit da was eingetragen wird
 
könntest du das also etwas genauer erklären also wie genau ich etwas speichern muss und wie ich dann im src code das schreiben muss damit da was eingetragen wird
Nochmal langsam:

Du hast einen Vokabeltrainer. Der soll die Vokabelliste z. B. einfach in ganz normale Dateien halten (das ist, was @mrBrown eben angesprochen hat).

Sagen wir mal fiktiv C:\vokabeln.txt.

Die Datei gibts zunächst ja nicht, also müsstest Du diese erstellen (z. B. beim Start des Programms). Dann wäre die Datei aber erstmal leer. Klar, der Benutzer kann dann Vokabeln zur Datei hinzufügen.

Wie ich Dich verstanden habe, soll aber eine "Basisliste" ausgeliefert werden. In dem Fall kannst Du natürlich zum Erstellen der Datei C:\vokabeln.txt die Basislisten-Ressource verwenden (Ressource lesen und als Datei C:\vokabeln.txt abspeichern).

Danach existiert die C:\vokabeln.txt und der Benutzer kann in diese Datei seine Vokabeln hinzufügen.
 
Du musst einfach nur ganz normale Dateien nutzen.

Die kannst du zB mit Files#newBufferedReader und Files#newBufferedWriter lesen und schreiben.

Nochmal langsam:

Du hast einen Vokabeltrainer. Der soll die Vokabelliste z. B. einfach in ganz normale Dateien halten (das ist, was @mrBrown eben angesprochen hat).

Sagen wir mal fiktiv C:\vokabeln.txt.

Die Datei gibts zunächst ja nicht, also müsstest Du diese erstellen (z. B. beim Start des Programms). Dann wäre die Datei aber erstmal leer. Klar, der Benutzer kann dann Vokabeln zur Datei hinzufügen.

Wie ich Dich verstanden habe, soll aber eine "Basisliste" ausgeliefert werden. In dem Fall kannst Du natürlich zum Erstellen der Datei C:\vokabeln.txt die Basislisten-Ressource verwenden (Ressource lesen und als Datei C:\vokabeln.txt abspeichern).

Danach existiert die C:\vokabeln.txt und der Benutzer kann in diese Datei seine Vokabeln hinzufügen.
ok danke ^^ Jetzt check ichs und das funktioniert auch
 

Zurück
Oben