0
 URL root = Thread.currentThread().getContextClassLoader().getResource(packageName.replace(".", "/"));

我使用上面的语句来访问给定包名的 .class 文件。但在某些情况下,我需要从\build\test\classes而不是\build\classes访问文件。如何修改上述语句?

4

1 回答 1

1

您的类路径有问题。 ${project}/build/test/classes${project}/build/classes文件夹表明您已经使用 Ant 编译代码,或者在 Eclipse 的“新建 Java 项目”对话框中选中了“允许源文件夹的输出文件夹”选项。

在您的情况下,您应该将项目配置为将所有源文件编译到同一个输出文件夹中/build/classes

如果您使用类加载器来加载资源,那么即使它以/.

InputStream is = this.getClass().getResourceAsStream("/some/resource");

这实际上意味着找到这个文件${project}/build/classes/some/resource。为了在目标位置获取该资源,最简单的方法是将其放置在${project}/src/some/resource.

虽然如果您使用 Eclipse,您应该考虑使用 Maven 和 m2eclipse。

于 2013-05-21T08:06:10.153 回答