spring-boot - 无法将 war 部署到 Tomcat

标签 spring-boot tomcat microservices

将应用程序 war 部署到服务器时出现此错误:

12-Sep-2018 10:21:54.726 SEVERE [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.processAnnotationsJar Unable to process Jar entry [module-info.class] from Jar [file:/xxx/apache-tomcat-8.0.41_xxxx/webapps/xxx/WEB-INF/lib/jaxb-api-2.3.0.jar] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

信息:

  1. 应用程序是使用 Spring Boot 创建的微服务
  2. 使用的 Java 是版本 8
  3. Tomcat版本:tomcat-8.0.41

谢谢。

最佳答案

module-info.class 是 Java 9 中引入的 Java 模块系统的模块描述符。Tomcat 8.0 中的某些代码无法读取该类文件中的字节码,因此部署失败。

我认为这是 Tomcat 8.0 的一个限制,已在 8.5 中修复。另请注意 end-of-life announcement已经为 8.0 制作,因此即使没有这个问题,您也应该计划尽快升级。

关于spring-boot - 无法将 war 部署到 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52336291/

相关文章:

java - 可以在 Eclipse 外的 tomcat 中部署 war,但不能在 Eclipse 中的 Tomcat 中部署 war

tomcat - 使用 Tomcat 的 server.xml 的 NetBeans 位置

microservices - DTO 不适用于微服务,而是直接用于 api

java - 在 AWS lambda 中部署 Spring Boot 应用程序

java - 如何在事件驱动微服务中创建重放机制

spring-boot - 如何处理Zuul在后端发生的错误?

spring-boot - jackson 遗产

tomcat - 如何在 tomcat 上优雅地关闭 ActiveMQ session 线程

java - VSCode SonarQube 支持 Visual Studio Code 错误 400

apache 到 tomcat : mod_jk vs mod_proxy