Ale*_*dre 4 java eclipse maven-2 classloader
我正在研究一个swing项目,使用maven2(来自命令行)和eclipse(没有maven集成).所以,我通过maven eclipse插件(mvn eclipse:eclipse)生成eclipse项目,在eclipse中导入它,并完成我的所有工作.
我的问题是:当我在eclipse中运行我的应用程序(作为Java应用程序)时,我找不到我的src目录中的任何资源.挖掘我的问题的信息,我从另一个问题进入这个答案.所以,我比较了以下说明的输出:
MyClass.class.getResource("/").getPath();
MyClass.class.getProtectionDomain().getCodeSource().getLocation().toString();
Run Code Online (Sandbox Code Playgroud)
那些分别给了我以下输出:
$ {workspace_loc}/$ {my_project}/target/test-classes/file:/ $ {workspace_loc}/$ {my_project}/target/classes /
检查上面的位置,我可以看到前者是空的,而另一个包含我所有编译的类和资源.所以,我得出结论,类加载器正在错误的地方寻找我的资源.所以,我想我有三个问题:
更新:我已经改变了我的代码,所以不是调用MyClass.class.getResource(...)或者MyClass.class.getResourceAsStream(...),我现在正在使用ClassLoader.getSystemResource(...)和ClassLoader.getSystemResourceAsStream(...).通过这种方式,在日食中一切正常.我只是不知道为什么.有什么暗示吗?
我有两种可能的情况:
您正在使用eclipse来编译您的项目.然后将eclipse配置为排除(或不包括)src文件夹中的资源.您可以在Project/Properties/Java Build Path/Source中进行设置.然后你花费你的src文件夹,并确保你有"包括所有","排除无"之类的东西.
即使您使用eclipse作为IDE,也可以使用maven运行maven应用程序来编译而不是eclipse.然后默认情况下,maven不会将资源从源文件夹复制到输出文件夹......因为它不是标准的maven方式.因此,类路径中缺少资源,您找不到它们.只需将maven配置更改为包含源文件夹中的资源即可.
我认为您必须添加src/main/resources到构建路径。这是在中完成的Project Properties > Build Path > Source。这是标准Maven项目的外观:

以后在使用Eclipse时,我建议使用m2eclipse插件并使用它创建项目。这将自动确保所有这些文件夹都在构建路径中。
| 归档时间: |
|
| 查看次数: |
16246 次 |
| 最近记录: |