我有一个用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文件中(包括球衣罐),并且它可以在Windows 10机器上运行。我唯一值得注意的是war文件名(“ bla.war *”)之后的错误消息中的星号。我不确定这是从哪里来的,或者确实与错误的根本原因有关。
有任何提示/想法吗?提前致谢 !
最佳答案
日志文件告诉您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