1. 程式人生 > >所有的環境中JDK版本都是1.8,但某個程式啟動時是1.7?

所有的環境中JDK版本都是1.8,但某個程式啟動時是1.7?

今天遇到個很奇怪的問題,公司開發了個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。