对Tomcat的WAR文件部署失败:URI方案错误

时间:2017-12-13 15:09:01

标签: java jersey war tomcat8 url-scheme

我有一个用Maven构建的war文件,它包含了它需要的所有依赖项(它是一个REST服务)。 我在两台机器上都使用Java JRE 1.8.0_152和Tomcat 8.5.24。一个是Windows 10 64位机器,另一个是Windows Server 2012 R2 64位机器。我已经构建(在Eclipse / Maven中)并在Windows 10计算机上成功部署了war文件,但是当我在Windows服务器计算机上部署相同的war文件时,我在Tomcat启动(或war文件部署)上收到以下错误:

13-Dec-2017 14:41:36.603 SEVERE [bla.bla-startStop-1] org.apache.catalina.core.ApplicationContext.log StandardWrapper.Throwable org.glassfish.jersey.server.internal.scanning.ResourceFinderException: The URI scheme war of the URI war:file:/C:/apache-tomcat-8.5.24/webapps/bla.war*/WEB-INF/classes/bla/bla/ is not supported. Package scanning deployment is not supported for such URIs.
Try using a different deployment mechanism such as explicitly declaring root resource and provider classes using an extension of javax.ws.rs.core.Application

然后,我认为另一条消息是相关的:

13-Dec-2017 14:41:36.615 SEVERE [bla.bla-startStop-1] org.apache.catalina.core.StandardContext.loadOnStartup Servlet [Jersey REST Service] in web application [/bla] threw load() exception

我使用Jersey作为REST的东西,但两台机器都安装了相同版本的JRE和Tomcat,它们是相同的war文件!(我甚至擦过了Tomcat安装并从头开始安装 - 同样的事情。)

我甚至不确定从哪里开始查看,因为所有依赖项都包含在war文件中(包括jersey jars),并且它在Windows 10计算机上工作;唯一值得注意的是战争文件名后的错误信息中的星号(" bla.war *")。我不知道它来自何处,或者它是否确实与错误的根本原因相关。

任何提示/想法?提前谢谢!

1 个答案:

答案 0 :(得分:1)

日志文件告诉您Tomcat / JVM正在尝试直接从.war文件中读取文件。 URI war:file:/C:/apache-tomcat-8.5.24/webapps/bla.war*/WEB-INF/classes/bla/bla/不受支持。此类URI不支持程序包扫描部署。 Try using a different deployment mechanism,例如明确声明根资源并提供

因此,它看起来像不同的tomcat配置。服务器上的Tomcat配置是否设置为解压战?例如。您需要确保设置unpackWARs==true。参考:how to make tomcat explode the war files