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

WAR file deployment to Tomcat fails: URI scheme error

我有一个用 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*") 之后的错误消息中的星号。我不确定这是从哪里来的,或者它是否确实与错误的根本原因有关。

有 hints/ideas 吗?提前致谢!

日志文件告诉您 Tomcat/the 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 配置是否设置为解压 war?例如。您需要确保 unpackWARs==true 已设置。参考:how to make tomcat explode the war files