在一些同学通过Mac电脑的Eclipse中开发的一些Java请求的JMeter测试代码(有Jar包),放到远程的Linux服务器上用JMeter时就遇到了“Unsupported major.minor version 51.0”的错误信息。
原因:执行环境中的JRE版本与被执行代码的class文件不兼容,一本是因为编译Java代码时使用的JRE版本比代码运行环境的JRE版本要高。我们所遇到的问题正式这样,有的同学的Mac机上模式使用的Java 7,而远程Linux服务器上我们是默认使用Java 6.
Java版本的主版本号如下:
J2SE 8 = 52,
J2SE 7 = 51,
J2SE 6.0 = 50,
J2SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
解决方案有两个:
(1)将执行环境的Java调整为兼容的高版本(如Java 7)
下载新版Java,并设置如下的环境变量即可:
1 2 3 |
[root@qa-test-ppe01 ~]# export JAVA_HOME=/root/jdk1.7.0_51 [root@qa-test-ppe01 ~]# export PATH=$JAVA_HOME/bin:$PATH [root@qa-test-ppe01 ~]# export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar |
(2)将那些代码重新编译打包,编译为兼容较低版本的class文件(如Java 6)
比如,在Eclipse中,“project => Proerties => Java Compiler”,设置"Compiler compliance level"为执行环境的Java版本。
或者,直接用javac命令编译时,指定生成class文件兼容的Java版本:javac -source 1.6 HelloWorld.java
参考资料:
http://stackoverflow.com/questions/10382929/unsupported-major-minor-version-51-0
http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html
2 Comments