【发布时间】:2016-07-10 13:13:03
【问题描述】:
我想制作一个 jar 文件来查找任务标签之间的相似之处。出于这个原因,我使用了 2 个 WordNet 字典的 Java 库:JWNL-1.4-rc3 和 JWI-2.3.3。我还在myProject 的resources 文件夹中放置了JWNL 库初始化所需的properties.xml 文件,以及WordNet 字典:
src/main/resources/
properties.xml
WordNet-3.0/dict (dict has 24 files inside)
properties.xml 文件的字典路径为:
<param name="dictionary_path" value="WordNet-3.0\dict"/>
在我的代码中,我有如下所示的两个代码 sn-ps。
此代码初始化 JWNL 库:
try {
JWNL.initialize(similarities.class.getClassLoader().getResourceAsStream("/properties.xml"));
}
catch (JWNLException e) {
e.printStackTrace();
}
similarities 是我的主要课程。
这是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();
}
但是当我导出一个可执行的 jar 并在控制台中运行它时,我收到以下错误:
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)
我已经打开了我的 jar 文件,并检查了里面有一个 resources 文件夹,里面有 properties.xml 和 WordNet 字典。我也打开了MANIFEST,我看到类路径是:.(句号)
3 天来我已经阅读了很多关于这个问题的帖子,但没有任何东西可以解决我的问题。我将不胜感激。
如果我必须发送其他内容,请告诉我,例如 POM.xml 或 properties.xml 文件。
【问题讨论】:
-
在查找资源时必须始终检查是否为空!