我在Jar文件中使用JWNL
wordnet时遇到问题。
JWNL
使用RandomAccessFile读取wordnet词典文件。为了创建一个Jar文件,wordnet字典文件放在resources / wordnet文件夹中。由于资源在我的构建路径中,我运行我在Eclipse中创建的应用程序没有问题。但是,当我使用另一个应用程序来运行创建的jar文件时,我收到以下错误:
java.io.FileNotFoundException:resources / wordnet / data.noun(没有这样的文件或目录)
来自以下代码:
RandomAccess _file = new RandomAccessFile(path, _permissions);
我使用以下代码检查当前的工作目录:
URL location = PrincetonRandomAccessDictionaryFile.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println(location.getFile());
似乎两种情况都具有相同的位置:/project/bin/
我该如何解决这个问题?谢谢
答案 0 :(得分:2)
你似乎缺少的关键信息是Jar文件被压缩,你不能因为压缩而“寻找”(我相信DEFLATE算法)。
但是,您可以在启动时将文件解压缩到temp file(s),然后使用它。应用程序退出时将删除临时文件,这是我能想到的最佳答案。
答案 1 :(得分:1)
RandomAccessFile读取Jar文件中的文件
JAR文件中没有文件。有JAR条目。您无法使用FileInputStreams,
RandomAccessFiles,
或FileReaders.
阅读它们。您需要使用JarInputStream
或其朋友。