0

我的 Java 程序引用了很多数据文件。我将它们与 src/ 和 bin/ 一起放在名为 data/ 的顶级目录中。在 Eclipse 中,对 data/ 和 ../data/ 的引用似乎都有效。当我从命令行运行它时,只有 ../data/ 有效。

当我将 bin/ 和 data/ 目录放入 jar 并正确设置入口点时,它似乎并不知道我希望它访问jar内的 data/ 目录。我能够让它工作的唯一方法是将引用设置为 ../data/ 并将 jar 放在 bin 目录中。这显然对我没有任何好处,因为它不是独立的。

我需要对参考做些什么才能使它们起作用?

谢谢

4

3 回答 3

3

我建议您以相对于类路径的方式访问这些文件,无论是在 Eclipse 中还是在已编译的 JAR 中。

有几种方法可以解决,但一个基本的仅限 JDK 的方法是使用 Class 的getResourceAsStream()方法,让您可以访问可以读入的 InputStream 对象。

于 2010-09-29T02:59:42.770 回答
1

如果您的资源在 jar 文件中,请考虑使用以下方法读取它们:

class Class {
    InputStream getResourceAsStream(String name)
}

这会查找相对于类(可能在 jar 中)的资源,而不是相对于工作目录的资源。

于 2010-09-29T03:00:16.437 回答
-1

谢谢你们指点我这条路,伙计们。我最终做了一个非常糟糕的解决方法,因为我对 IO 还不是很好。我使用 getClass() 来构造一个 URL:

http://forums.sun.com/thread.jspa?threadID=5258488

然后从这个字符串创建一个新的文件对象(新文件(文件)):

字符串文件 = url.toString().replaceFirst("file:", "");

这使我可以保留引用文件对象的相同代码。

于 2010-09-29T18:21:38.213 回答