2012-02-01 16 views
6

EJBを呼び出そうとすると、クライアントから(jdk1.7を使用して)のNetBeansを使用して作られている間は(JDK1.6を使用して)のEclipse IDEを使用して作られた、私はエラー -サポートされていないクラスバージョンエラー

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 –

答えて

14

ビルド設定でターゲットJREのバージョンを1.6に変更してください。

+0

@ RaviG-どのように私は、「ターゲットJREを変更する必要がありますEclipseの「ビルド構成」のバージョンを1.6に設定します。 –

+1

詳細な説明はhttp://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-JREs.htmにあります。 –

1

問題は - jdk1.6を使用していたクライアントからjdk1.7を使用してEJBを呼び出していました。 jdk1.7をjdk 1.6に切り替えました。 jdk1.6を1.7に切り替えることもできます。 結論 - 呼び出し元と同じバージョンまたはそれより低いバージョンのjdkを使用しているEJBを呼び出すことができます。

1

私は同じ問題がありましたが、私はテキストパッドを使用していました。解決策はかなりシンプルでした。クラスを別の場所(バックアップフォルダなど)に衝突させてみてください。同じディレクトリに存在しない場合は、単に削除するだけでもかまいません。次に、コンピュータの仕様に合わせて新しいクラスを作成できるように、Javaファイルをコンパイルしてみてください。もしそれがあなたのために働くなら、それは私のために働いた。 :)

0

私が問題を抱えていたのは、このプロジェクトのビルド構成を変更するだけです。 プロジェクト名を右クリック - > [プロパティ] - > [Javaコンパイラ] - > [プロジェクト固有の設定を有効にする] - > [コンパイラ準拠レベル]を1.7に設定する

Eclipseには独自のコンパイラどのバージョンのjavac(jdk)システムで使用しているのでしょうか?まず、Eclipseのコンパイラのバージョンを設定する必要があります。

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

関連する問題