Ich möchte eine JAR-Datei, die Ähnlichkeiten zwischen Aufgaben Etiketten findet. Aus diesem Grund verwende ich 2 Java-Bibliotheken des WordNet-Wörterbuchs: JWNL-1.4-rc3
und JWI-2.3.3
. Ich habe auch im resources
Ordner myProject
, die properties.xml
-Datei abgelegt, die von JWNL Bibliothek benötigt wird, um initialisiert zu werden, sowie die WordNet Wörterbuch:Problem mit relativen Pfaden von Ressourcen-Dateien in einem ausführbaren Jar mit Maven
src/main/resources/
properties.xml
WordNet-3.0/dict (dict has 24 files inside)
Die properties.xml
Datei hat den Verzeichnispfad mit der Wert:
<param name="dictionary_path" value="WordNet-3.0\dict"/>
In meinem Code habe ich die zwei Codeschnipsel unten gezeigt.
Dieser Code initialisiert die JWNL Bibliothek:
try {
JWNL.initialize(similarities.class.getClassLoader().getResourceAsStream("/properties.xml"));
}
catch (JWNLException e) {
e.printStackTrace();
}
similarities
meine Hauptklasse ist.
Dies ist der Konstruktor des Wörterbuchs JWI:
try {
//String path = similarities.class.getProtectionDomain().getCodeSource().getLocation().getPath();
dict=new Dictionary(this.getClass().getClassLoader().getResource("WordNet-3.0\\dict"));
dict.open();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Aber wenn ich eine ausführbare jar exportieren und sie in der Konsole laufen lasse, erhalte ich folgende Fehlermeldung:
net.didion.jwnl.JWNLException: Properties file invalid or not found
at net.didion.jwnl.JWNL.initialize(JWNL.java:103)
at com.iteforth.annotationToBPM.similarities.main(similarities.java:576)
Exception in thread "main" java.lang.NullPointerException
at edu.mit.jwi.data.FileProvider.<init>(FileProvider.java:191)
at edu.mit.jwi.data.FileProvider.<init>(FileProvider.java:166)
at edu.mit.jwi.data.FileProvider.<init>(FileProvider.java:148)
at edu.mit.jwi.Dictionary.<init>(Dictionary.java:41)
at com.iteforth.annotationToBPM.similarities.<init>(similarities.java:92)
at com.iteforth.annotationToBPM.similarities.main(similarities.java:627)
habe ich bereits öffnete meine JAR-Datei und ich habe überprüft, dass es einen resources
Ordner mit der properties.xml
und dem WordNet Wörterbuch gibt. Ich habe auch MANIFEST
geöffnet und ich habe gesehen, dass der Klassenpfad ist: .
(Punkt)
Ich habe viele Threads über dieses Problem für 3 Tage gelesen, aber nichts hat mein Problem gelöst. Ich werde jede Hilfe schätzen.
Sagen Sie mir, wenn ich etwas anderes senden muss, z. B. die POM.xml
oder properties.xml
Dateien.
Sie _always_ müssen für null überprüfen, wenn aufzublicken eine Ressource! –