java - 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文件中生成了一个路径,但它不起作用。然而,我的同事使用完全相同的代码在我们的输出文件夹中有一个正常的路径。
有人有想法吗?
谢谢
解决方案
我找到了这个问题的根本原因,这是一个项目配置问题。
在 webshpere liberty 服务器中,如果您与多个项目有依赖关系,则必须进入属性项目 > 部署程序集 > 并添加您的项目。之后,服务器将生成一个包含不同节点的 myProject.war.xml。某些节点具有带有路径的 targetInArchive 属性,并且此配置强制类加载器在生成的战争中返回路径。
希望这些信息对某人有所帮助。
推荐阅读
- c++ - 链接c ++动态库不断失败
- css - CSS 和 JS 文件不会在服务器上加载 | 拉拉维尔
- visual-studio-code - 如何在 vscode 的 tmLanguage.Json 中定义自定义颜色?
- bash - 在 unix 中运行带有特殊字符的 shell 脚本
- c++ - 为什么我的子类不继承我父母的字符串?
- java - 在此方法中找不到对返回的引用
- sql-server - 在不使用 IN 子句的情况下使用 T-SQL 有效删除记录
- javascript - 如何从已经创建实例的类中调用静态异步函数?
- pandas - Pandas - 更改数据框的对齐方式
- jquery - Openstreetmap 将 css 类添加到标记