錯誤原因
有時候把項目從本機編譯文件部署到服務器,或者發給別人使用時,會報如下異常:
java.lang.UnsupportedClassVersionError: test_hello_world :
Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
.........................................
這個錯誤時因為JDK版本的問題,比如本機的JDK為1.6,但是項目編譯時用的JDK為1.7那么就會出現這個異常,因為本機JDK版本較低不能執行編譯版本為高版本的Class文件,各JDK版本對應的錯誤編號如下:
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
解決辦法
Eclipse/Myeclipse
步驟一:
修改Eclipse/Myeclipse JDK版本:
Window à Preference à Java à Installed JREs
在相應的JDK版本前面打鈎
步驟二:
修改項目的JDK編譯版本
項目右鍵 à Java Compiler
修改JDK編譯版本
步驟三(關鍵):
因為我們一般是從Web容器(Tomcat、Resin等)中Copy編譯文件上傳服務器,所以這一步尤為重要,需要修改Web容器使用的JDK版本:
Window à Preference à Myeclipse à Servers à Resin à Resin3.x à JDK
這樣就搞定了。
這三個JDK版本最好保持一致。
手動編譯
這個只是在少量class文件時適用:
javac -target 1.4 HelloWorld.java