SSH远程执行脚本tomcat9未启动-jdk版本问题

问题背景:

   最近在公司做自动化部署项目,采用SSH远程执行tomcat部署脚本,遇到一个问题,使用SSH远程执行部署脚本,tomcat9未启动,但是直接到服务器上执行部署脚本却能启动脚本

问题定位:

1,查看部署日志,SSH远程调用的部署脚本成功执行

2,采用SSH远程部署,查看tomcat部署日志出现如下错误

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/itmuch/cloud/study/EurekaApplication : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)

这个原因很明显,是tomcat9不支持部署节点机上的jdk版本导致

3,但是直接去服务器上直接手动执行部署脚本./deploy.sh却又能部署成功,这个就很诡异了

4,经过定位发现:SSH远程不会读取系统变量,所以最好的方式是用JAVA的绝对路径

这样我直接在部署脚本头上加入如下代码,如下2总方式解决问题

1)采用export命令

 

JAVA_HOME=/usr/localk1.8.0_77
export JAVA_HOME
CLASSPATH=.:$JAVA_HOMEb/tools.jar:$JAVA_HOMEb/dt.jar
export CLASSPATH
PATH=$JAVA_HOME/bin:$PATH
export PATH

2)服务器配置JAVA_HOME可以加入

source /etc/profile

这个方法的前提是/etc/profile中加入了JAVA_HOME的环境变量,如下

JAVA_HOME=/usr/java/jdk1.8.0_11

JRE_HOME=/usr/java/jdk1.8.0_11/jre

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

export PATH JAVA_HOME JRE_HOME CLASSPATH
至此问题解决

 

你可能感兴趣的:(SSH远程执行脚本tomcat9未启动-jdk版本问题)