今天在执行一段java程序的时候居然出现
C:/Tomcat/Test>java B
Exception in thread "main" java.lang.UnsupportedClassVersionError: B (Unsupporte
d major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
居然会报不支持的版本;原来这个错误是由于使用了高版本的编译,低版本的运行环境所致。
先到JDK的安装目录下查看java.exe的版本,使用JDK目录下的java.exe运行,一切正常。
再到system32目录下的java.exe运行,还是正常。这样奇怪了,到底我在cmd环境下运行的是哪个版本的 java.exe
查看系统的PATH环境变量,原来PATH中的值前几个路径是C:/oracle/ora92/bin;C:/Program Files/Oracle/jre/1.3.1/bin,shell环境查找java.exe的时候跑到oralce的路径下去了,oracle路径下的版本比较低。所以才导致前面出现的
情况。把system32的路径放到PATH变量的前面,解决问题。