2012-02-01 135 views
6

雖然試圖調用EJB使用(使用jdk1.7)從客戶端使用Eclipse IDE(使用JDK1.6)製成的NetBeans做,我收到以下錯誤 -不支持的類版本錯誤

Exception in thread "main" java.lang.UnsupportedClassVersionError: stateless/TestEjbRemote : Unsupported major.minor version 51.0 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at com.sun.ejb.EJBUtils.getBusinessIntfClassLoader(EJBUtils.java:688) 
    at com.sun.ejb.EJBUtils.loadGeneratedRemoteBusinessClasses(EJBUtils.java:463) 
    at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:414) 
    at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:75) 
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) 
    at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:556) 
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:514) 
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455) 
    at javax.naming.InitialContext.lookup(InitialContext.java:392) 
    at Main.main(Main.java:19) 

任何解決這個問題?

+1

看到這個... HTTP://stackoverflow.com/questions/6066103/what-is-the-reason-for-unsupportedclassversionerror – 2012-02-01 07:01:38

回答

14

嘗試在構建配置中將目標JRE版本更改爲1.6。

+0

@ RaviG-我應該如何改變「目標JRE在Eclipse中將版本設置爲1.6。 – 2012-02-01 07:12:24

+1

詳細解釋請參見 - http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-JREs.htm – 2012-02-01 07:27:49

1

問題是 - 我正在調用EJB,使用jdk1.6從客戶端使用jdk1.7創建。開關jdk1.7到jdk 1.6,它工作。或者可以將jdk1.6切換到1.7,那麼它也可以工作。 結論 - 你可以調用任何使用相同版本或更低版本的jdk作爲調用者的EJB。

1

我有同樣的問題,但我使用的是textpad。解決方案非常簡單。嘗試將類放置在不同的位置(可能是備份文件夾),或者只要在同一個目錄中不存在就可以直接刪除它。然後嘗試編譯java文件,以便您可以爲您的計算機規格創建一個新類。試試它是否適合你,因爲它適合我。 :)

0

這是我第二次遇到問題,只需更改此項目的構建配置。 右鍵單擊項目名稱 - > [屬性] - > [java編譯器] - > [啓用項目特定設置] - >將[編譯器合規性級別]設置爲1.7

Eclipse擁有自己的編譯器,在你的系統中關心哪個版本的javac(jdk),所以你必須首先配置eclipse編譯器的版本。

參考:java.lang.UnsupportedClassVersionError: Bad version number in .class file?

相關問題