记一次IDEA 打包环境JDK版本和生产环境JDK版本不一致引发的血案

Posted monkjavaer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次IDEA 打包环境JDK版本和生产环境JDK版本不一致引发的血案相关的知识,希望对你有一定的参考价值。

问题描述:

本地开发环境idea中能正常运行项目,而idea打war包到Linux服务器的Tomcat下却不能正常运行,报如下错误:

09-Aug-2019 08:56:06.878 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file
09-Aug-2019 08:56:06.924 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors
09-Aug-2019 08:56:07.024 WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
09-Aug-2019 08:56:07.024 WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

问题排查:

IDEA 打包环境JDK版本和Linux生产环境JDK版本不一致,导致线上Tomcat无法正常运行

解决方案:

  • 1、确保两边环境安装相同的jdk版本
  • 2、选择idea导航栏中Help -》Find Action,在弹框中输入Switch Boot JDK,在select Boot JDK中选择本机jdk版本,然后重启,在idea的Terminal运行java -version命令确认:
    技术图片

  • 3、打包后检查war包内META-INF下的MANIFEST.MF文件,查看编译环境,确保jdk版本(get以下META-INF的作用):

    Manifest-Version: 1.0
    Built-By: Administrator
    Created-By: Apache Maven 3.5.0
    Build-Jdk: 1.8.0_161

以上是关于记一次IDEA 打包环境JDK版本和生产环境JDK版本不一致引发的血案的主要内容,如果未能解决你的问题,请参考以下文章

记一次Linux下JavaWeb环境的搭建

记一次PATH环境变量设置不生效的问题

记一次log4j不打印日志的踩坑记

记一次spring5源码的完整编译过程

IDEA的环境JDK的版本选择不能胡来

记一次内存溢出查找的问题