今天遇到个很奇怪的问题,公司开发了个eclipse plugin ide,但是启动时,总显示一下错误:
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Unrecognized VM option 'MetaspaceSize=128M'
java.lang.UnsupportedClassVersionError: com/delta/cornerstone/runtime/RuntimeEngine : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(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.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 sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Exception in thread "main"
这一看就知道是JDK版本不对,'MetaspaceSize=128M' JDK1.8以上版本才有的属性,再加上 Unsupported major.minor version 52.0 指的是用低版本的JDK启动了1.8版本的程序。
虽然找到了问题的原因,但是找不到为什么会出现,因为不论是eclipse配置的JDK,还是环境变量中的JDK全是 1.8, 而且把所有的环境变量仔仔细细的都看了一遍,发现全是1.8。我们也把path中所有可能出现的JAVA路径都看了一遍,只有一个JAVA_HOME。
怎么办呢?因为一定存在一个低版本的JDK,要不然不会出现上面的错误。
然后我就将JDK1.8环境变量删除掉,在看java -version, 奇怪的现象出现了,显示出了JDK1.7的路径(按道理,应该不存在jdk变量了)。而且这时候,path中根本就没有JDK相关的任何路径(不要怀疑,我真的检查过了)。
检查了好久。。。
突然想到,会不会是注册表的原因(因为之间用exe直接安装过JDK1.7)
哈哈,果然,把windows的“程序与功能”打开,会发现有个JAVA程序,卸载掉,OK。