我的Java程序引用了很多数据文件。我将它们放在名为data /的顶级目录中,以及src /和bin /。在Eclipse中,对data /和../data/的引用似乎都有效。当我从命令行运行它时,只有../data/工作。
当我将bin /和data /目录放在jar中并正确设置入口点时,它似乎不知道我希望它访问里面的数据/目录 jar 。我能够让它工作的唯一方法是将引用设置为../data/并将jar放在bin目录中。这显然对我没有任何好处,因为它不是独立的。
我需要对引用做些什么才能使它们起作用?
由于
答案 0 :(得分:3)
我建议您以类路径相对的方式访问文件,无论是在Eclipse中还是在编译的JAR中。
有几种方法可以解决它,但基本的JDK方法是使用Class的getResourceAsStream()
方法,使您可以访问可以读入的InputStream对象。
答案 1 :(得分:1)
如果您的资源位于jar文件中,请考虑使用此方法来阅读它们:
class Class {
InputStream getResourceAsStream(String name)
}
这会查找相对于类(可能在jar中)的资源,而不是相对于工作目录。
答案 2 :(得分:-1)
谢谢你指点我这条道路,伙计们。我最终做了一个非常糟糕的解决方法,因为我对IO不是很好。我使用getClass()来构造一个URL:
http://forums.sun.com/thread.jspa?threadID=5258488
然后从这个字符串(新文件(文件))中创建一个新的File对象:
String file = url.toString()。replaceFirst(“file:”,“”);
这使我能够保留引用文件对象的相同代码。