2012-02-01 13 views
6

Starając wywołać EJB wykonane przy użyciu NetBeans (przy użyciu jdk1.7) z klientem z wykorzystaniem Eclipse IDE (przy użyciu jdk1.6), otrzymuję następujący ERROR-nieobsługiwany Class Wersja Błąd

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) 

Wszelkie rozwiązanie tego problemu?

+1

Zobacz ten ... http: //stackoverflow.com/questions/6066103/what-is-the-reason-for-unsupportedclassversionerror –

Odpowiedz

14

Spróbuj zmienić docelową wersję JRE na 1.6 w konfiguracji konfiguracji.

+0

@ RaviG- jak należy zmienić "Target JRE wersja do 1.6 w konfiguracji konfiguracji "w Eclipse. –

+1

Szczegółowe wyjaśnienie jest dostępne na stronie - http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-JREs.htm –

1

Problem polegał na tym, że wywoływałem EJB, wykonane przy pomocy jdk1.7 od klienta, który korzystał z jdk1.6. Przełączono jdk1.7 na jdk 1.6, zadziałało. lub można przełączyć jdk1.6 na 1.7, wtedy też by działało. Wniosek - możesz wywołać dowolny komponent EJB, który używa tej samej wersji lub niższej wersji jdk jako dzwoniącego.

1

Miałem ten sam problem, ale korzystałem z textpada. Rozwiązanie było całkiem proste. Spróbuj umieścić klasę w konflikcie w innej lokalizacji (ewentualnie w folderze kopii zapasowej) lub po prostu usuń ją, o ile nie istnieje w tym samym katalogu. Następnie spróbuj skompilować plik java, aby umożliwić zbudowanie nowej klasy zgodnie ze specyfikacją komputera. Spróbuj, jeśli to działa dla ciebie, bo to działało dla mnie. :)

0

Już drugi raz miałem problem, wystarczy zmienić konfigurację kompilacji tego projektu. Kliknij prawym przyciskiem myszy nazwę projektu -> [właściwości] -> [kompilator Java] -> [Włącz ustawienia projektu] -> ustaw [poziom zgodności kompilatora] na 1,7

Eclipse ma swój własny kompilator, nie znaczenie jaka wersja javac (jdk) w twoim systemie, więc musisz najpierw skonfigurować wersję kompilatora eclipse.

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

Powiązane problemy