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
 

Nilsy8214

Aktives Mitglied
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

mihe7

Top Contributor
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).
 

Nilsy8214

Aktives Mitglied
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]
 

Nilsy8214

Aktives Mitglied
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
 

Nilsy8214

Aktives Mitglied
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
 

mihe7

Top Contributor
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.
 

Nilsy8214

Aktives Mitglied
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
 

mrBrown

Super-Moderator
Mitarbeiter
Du musst einfach nur ganz normale Dateien nutzen.

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

mihe7

Top Contributor
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.
 

Nilsy8214

Aktives Mitglied
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
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Maven Jlink Image macht nur .dll Files Tools - Maven, Gradle, Ant & mehr 15
G Tomcat log files Tools - Maven, Gradle, Ant & mehr 6
C Applet Öffnen eines JAR-Files im JAR-File Tools - Maven, Gradle, Ant & mehr 2
C Maven Widerholtes downloaden von maven-metadata.xml files und "checking for updates" Tools - Maven, Gradle, Ant & mehr 11
N JAR Archive mit mehreren Klassen und anderen JAR Files erstellen Tools - Maven, Gradle, Ant & mehr 6
G Ant Files umbenennen Tools - Maven, Gradle, Ant & mehr 2
G Nachladen von unbekannten Class-Files im JAR-Archiv Tools - Maven, Gradle, Ant & mehr 4
F Jar-Files Tools - Maven, Gradle, Ant & mehr 6
I Simples Runtime Image mit Jlink Tools - Maven, Gradle, Ant & mehr 4
R JLink Tools - Maven, Gradle, Ant & mehr 3
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
8u3631984 JAR aus anderem Module verwenden für Docker Image Tools - Maven, Gradle, Ant & mehr 0
M Image -> BufferedImage Tools - Maven, Gradle, Ant & mehr 14
S aus einem JApplet ein Image in separatem JFrame anzeigen Tools - Maven, Gradle, Ant & mehr 10
P zeitliche Änderung in Random Image Tools - Maven, Gradle, Ant & mehr 2
S Image per Klick unterscheiden Tools - Maven, Gradle, Ant & mehr 6
G Image sichtbar bzw unsichtbar machen? Tools - Maven, Gradle, Ant & mehr 8
M Nachträgliches Konvertieren von GIF/JPG raw-Daten in Image? Tools - Maven, Gradle, Ant & mehr 2
G Kann Pfad zu einem Image auf dem Webserver nicht angeben Tools - Maven, Gradle, Ant & mehr 2
G Wie überprüft man beim Image ob es geklickt wurde? Tools - Maven, Gradle, Ant & mehr 9

Ähnliche Java Themen

Neue Themen


Oben