Jas*_*n S 7 java eclipse resources
这是令人难以置信的......当我在包含文本文件的打包JAR文件上运行Java时,我可以使getResource()和getResourceAsStream()正常工作.(供参考,请参阅有关访问资源的Sun文档)当我在Eclipse中运行它时,我似乎无法使相同的程序正常工作,即使我已将我的文本文件放在与编译的.class文件相同的树中
你们其中一个人可以指出我的任何细微之处,以确保getResource()和getResourceAsStream()函数正常工作吗?
我有一个预感,它与CLASSPATH有关,和/或Eclipse将.class文件自动编译.(我注意到当我运行Ant时,它编译了自上次Ant构建以来已经更改的所有Java文件,即使Eclipse已经编译了这些Java文件.)
Sco*_*eld 16
几点说明:
首先 - 正如Chocos所说,把它放在日食源dirs中,而不是二进制dirs.当您"清理"时,Eclipse将清除二进制目录,以及清理不匹配的文件.它会将非java源文件复制到二进制目录.
这意味着即使您将文件放在二进制目录中,它也可能被eclipse删除...
请记住,getResourceAsStream和getResource相对于调用它们的代码包进行操作.例如:
package a.b.c;
public class Foo {
...
getClass().getClassLoader().getResourceAsStream("fee.txt");
...
}
Run Code Online (Sandbox Code Playgroud)
这实际上是寻找a/b/c/fee.txt; 包装是预先填写的.如果您在与Foo.java文件相同的源目录中具有fee.txt,或者如果在具有相同目录结构的类路径上有一组单独的资源目录,则此方法很有效.
如果你使用
...getResourceAsStream("/fee.txt");
Run Code Online (Sandbox Code Playgroud)
它会直接在类路径上查找fee.txt.
从命令行运行时,JAR中的哪个是资源文件? - 斯科特
Cho*_*hos 10
如果将文本文件与源文件一起放入,Eclipse会将其复制到放置其编译的.class文件的位置,因此当您从Eclipse运行应用程序时,您将看到您的文本文件(并且您将能够编辑Eclipse中的文件也是如此).