class.getResource(...)。getFile()返回什么?

时间:2017-06-29 06:24:19

标签: java maven tomcat

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-SNAPSHOT.war

我将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没有版本信息。任何人都可以向我解释出了什么问题&amp;怎么修?提前谢谢。

2 个答案:

答案 0 :(得分:1)

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

请确保重命名不含版本的目录,xyzservice,然后重试。

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

how to Build project with maven without version

答案 1 :(得分:1)

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