what class.getResource(...).getFile() returns?



pom.xml 片段:

<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyzservice</artifactId>
<version>2.2.2-SNAPSHOT</version>
<packaging>war</packaging>

结果文件: xyzservice-2.2.2-快照.war

我将战争文件复制到webapps目录,将其重命名为:xyzservice.war。然后在被Tomcat提取后,这段代码:

AImpl.class.getResource("/abc/d.pdf").getFile();

给了我:/usr/local/tomcat-8.0.36-8082/webapps/xyzservice-2.2.2-SNAPSHOT/WEB-INF/classes/abc/d.pdf但我期待没有版本信息的/usr/local/tomcat-8.0.36-8082/webapps/xyzservice/WEB-INF/classes/abc/d.pdf。谁能向我解释出了什么问题以及如何解决?提前谢谢。

看看最初的战争文件 - 它被命名为artifactID-version.war所以只是重命名 .war 文件无济于事。您必须在pom.xml中调整版本。

从您的帖子中可以明显看出,您的 Web 应用程序是在 tomcat webapps 目录中使用名称xyzservice-2.2.2-SNAPSHOT提取的。可能是您重命名了 war 文件,但没有重命名其中的目录。

请确保重命名没有版本的目录,即xyzservice,然后重试。

如果您希望在构建时删除版本,请参阅下面的帖子,并在构建标记的maven-war-plugin配置部分中包含不带版本的warName标签。

如何在没有版本的情况下使用maven构建项目

最新更新