我正在开发一个 swing 项目,使用 maven2 (从命令行)和 eclipse (没有 Maven 集成)。所以,我通过生成 eclipse 项目Maven Eclipse 插件 (mvn eclipse:eclipse
),将其导入到 eclipse 中,并完成我所有的工作。
我的问题是:当我在 eclipse 中运行我的应用程序(作为 Java 应用程序)时,我找不到 src 目录中的任何资源。挖掘有关我的问题的信息,我进入这个答案来自另一个问题。因此,我比较了以下指令的输出:
MyClass.class.getResource("/").getPath();
MyClass.class.getProtectionDomain().getCodeSource().getLocation().toString();
这些分别给了我以下输出:
${workspace_loc}/${my_project}/target/test-classes/
文件:/${workspace_loc}/${my_project}/target/classes/
检查上述位置,我可以看到前者是空的,而另一个包含我编译的所有类和资源。所以,我得出的结论是类加载器正在错误的位置寻找我的资源。所以,我想我有三个问题:
- 我的理解正确吗?
- 如果是这样,它如何找到正在加载的类?
- 我该如何解决这个问题?
更新:我改变了我的代码,所以不用调用MyClass.class.getResource(...)
or MyClass.class.getResourceAsStream(...)
,我现在正在使用ClassLoader.getSystemResource(...)
and ClassLoader.getSystemResourceAsStream(...)
。这样,在eclipse中就一切正常了。我只是不知道到底为什么。有什么提示吗?
对我来说有两种可能的情况:
您正在使用 eclipse 来编译您的项目。然后将 eclipse 配置为排除(或不包含)src 文件夹中的资源。您可以在 Project/Properties/Java Build Path/Source 中设置它。然后展开 src 文件夹,并确保有“全部包含”、“不排除任何”之类的内容。
即使您使用 eclipse 作为 IDE,您也可以使用 maven 来编译而不是 eclipse 来运行 Maven 应用程序。那么默认情况下maven不会将资源从源文件夹复制到输出文件夹...因为它不是标准的maven做事方式。因此,类路径中缺少该资源,并且您找不到它们。只需更改您的 Maven 配置以包含源文件夹中的资源即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)