SmartJob、DmsWeb与SmartSys共享服务器容易引发Java版本冲突问题:
Java版本不正确
UnsupportedClassVersionError
Exception in thread “main” java.lang.UnsupportedClassVersionError: com/sf/smartjob/main/SmartJob : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
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.URLClassLoader1.run(URLClassLoader.java:355)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:354)atjava.lang.ClassLoader.loadClass(ClassLoader.java:424)atsun.misc.Launcher 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:424) at sun.misc.Launcher1.run(URLClassLoader.java:355)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:354)atjava.lang.ClassLoader.loadClass(ClassLoader.java:424)atsun.misc.LauncherAppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
目前版本的麒麟、凝思操作系统自带的JAVA虚拟机版本大多是1.7。
[smart@client3-1 ~]$ type java
java is hashed (/usr/bin/java)
[smart@client3-1 ~]$ java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (rhel-2.3.10.4.ky3-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
[smart@client3-1 ~]$
各个隔离厂家的反向代理软件(发送端和接收端)大都是在JAVA1.7环境运行的。
SmartWeb和SmartJob则使用的是更新版本的JAVA1.8。所以如果WEB/统计服务和SCADA服务共享同一台服务器时,SmartWeb/SmartJob程序和隔离程序会发生版本冲突。
【解决方法】
- 维持JAVA_HOME等相关环境变量指向1.7。
- 修改smartjob.sh脚本中java改为指向java1.8的绝对路径(假定1.8的java所在目录为/home/smart/jdk1.8.0_181/bin/):
从
nohup java -Djava.net.preferIPv4Stack=true -cp $CLASSPATH com.sf.smartjob.main.SmartJob &
改为
nohup /home/smart/jdk1.8.0_181/bin/java -Djava.net.preferIPv4Stack=true -cp $CLASSPATH com.sf.smartjob.main.SmartJob &
- 在配置文件conf/SmartJob.properties中增加下面第一行的内容,注意路径前后都要有斜杠。
javaPath=/home/smart/jdk1.8.0_181/bin/
group=chenth
maxJobs=1
minJobs=1
-
更新文件lib/SmartJob.jar至最新版本。
-
WEB启动脚本catalina.sh也需要添加java1.8的绝对路径。