今日在做系統補丁開發時,偶遇了一番UnsupportedClassVersionError錯誤。從異常棧信息來說,Bad Version
number in .class file
已經是非常明確的指示!可惜的是,往往在實際當中,總是被一些表面東西遮蓋了這個Error的真實面目,把簡單複雜化了(造成這個問題多是IDE引起的,
哎,方便的同時,也在製造麻煩)。
Google了一番無疑都是指向同一個問題:Java虛擬機版本不一致引發編譯後.class文件在類加載時不能通過JVM驗證的問題。當然在此,解決方
案也是,只需要求統一Java虛擬機版本重新編譯就行了。
這次碰到的情況不會跳出上面的問題,只是在檢測這個異常的時候被Eclipse矇蔽了眼睛,走了一小段彎路罷了!在工程中顯示的JRE是1.5,但是在部
署到JBOSS服務器時,就老愛拋UnsupportedClassVersionError錯誤,哎,在Eclipse中一時半會以爲工程的配置都
OK,但是,等自己打開Eclipse中的Java
Complier時,卻無語的發現這裏顯示的是1.6,哎,可能是自己電腦上安裝了其他JVM的問題!
【MARK】異常信息
- java.lang.UnsupportedClassVersionError: Bad version number in . class file
- 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.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 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:683 )
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:425 )
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:445 )
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673 )
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386 )
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196
)
2010-07-12