URL root = Thread.currentThread().getContextClassLoader().getResource(packageName.replace(".", "/"));
我使用上面的语句来获取给定包名的.class文件。但在某些情况下,我需要从 \ build \ test \ classes 而不是 \ build \ classes 访问文件。我如何修改上述声明?
答案 0 :(得分:1)
您遇到类路径问题。
${project}/build/test/classes
和${project}/build/classes
文件夹建议您使用Ant编译代码,或者在Eclipse的“New Java Project”对话框中选中“允许源文件夹的输出文件夹”选项
您应该将项目配置为将所有源文件编译到同一输出文件夹中,例如/build/classes
。
如果您使用类加载器加载资源,那么您提供的路径对于整个文件系统来说并不是绝对的,即使它以/
开头。
InputStream is = this.getClass().getResourceAsStream("/some/resource");
这实际上意味着找到此文件${project}/build/classes/some/resource
。
为了在目标位置获取该资源,最简单的方法是将其放在${project}/src/some/resource
。
如果使用Eclipse,你应该考虑使用Maven和m2eclipse。