首页 > 解决方案 > classloader.getResource 返回带有war文件的路径

问题描述

我无法理解此行在我的计算机上的行为:

File versionFile = new File(classLoader.getResource("Version.txt").getFile());

面对 classLoader.getResource("Version.txt").getFile() 返回如下路径:

C:****\ServiceManager\target\ServiceManager.war!\WEB-INF\classes\Version.txt

似乎java在我的war文件中生成了一个路径,但它不起作用。然而,我的同事使用完全相同的代码在我们的输出文件夹中有一个正常的路径。

有人有想法吗?

谢谢

标签: javaclassloaderwar

解决方案


我找到了这个问题的根本原因,这是一个项目配置问题。

在 webshpere liberty 服务器中,如果您与多个项目有依赖关系,则必须进入属性项目 > 部署程序集 > 并添加您的项目。之后,服务器将生成一个包含不同节点的 myProject.war.xml。某些节点具有带有路径的 targetInArchive 属性,并且此配置强制类加载器在生成的战争中返回路径。

希望这些信息对某人有所帮助。


推荐阅读