RandomAccessFile读取Jar文件中的文件

时间:2014-05-02 04:53:24

标签: java eclipse-plugin

我在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/

我该如何解决这个问题?谢谢

2 个答案:

答案 0 :(得分:2)

你似乎缺少的关键信息是Jar文件被压缩,你不能因为压缩而“寻找”(我相信DEFLATE算法)。

但是,您可以在启动时将文件解压缩到temp file(s),然后使用它。应用程序退出时将删除临时文件,这是我能想到的最佳答案。

答案 1 :(得分:1)

  

RandomAccessFile读取Jar文件中的文件

JAR文件中没有文件。有JAR条目。您无法使用FileInputStreams, RandomAccessFiles,FileReaders.阅读它们。您需要使用JarInputStream或其朋友。