2012-02-01 16 views
6

Al tratar de llamar a un EJB hecho usando NetBeans (utilizando jdk1.7) desde un cliente hace usando Eclipse IDE (usando jdk1.6), estoy consiguiendo siguiente de erroresno compatible versión de la clase de error

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) 

Cualquier solución a este problema?

+1

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

Respuesta

14

Intente cambiar la versión de JRE de destino a 1.6 en Configuración de compilación.

+0

@ RaviG- ¿Cómo debo cambiar "el JRE Target versión a 1.6 en Build Configuration "en Eclipse. –

+1

La explicación detallada está disponible en http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-JREs.htm –

1

El problema fue que estaba llamando a EJB, creado utilizando jdk1.7 desde el cliente, que estaba usando jdk1.6. Cambió el jdk1.7 a jdk 1.6, funcionó. o uno puede cambiar jdk1.6 a 1.7, entonces también funcionaría. Conclusión: puede llamar a cualquier EJB que esté usando la misma versión o la versión más baja de jdk como la persona que llama.

1

Tuve el mismo problema, pero estaba usando el teclado. La solución fue bastante simple. Intente ubicar la clase en conflicto en una ubicación diferente (una carpeta de respaldo, tal vez sea lo que sea) o simplemente puede eliminarla siempre que no exista en el mismo directorio. Luego intente compilar el archivo java para que pueda crear una nueva clase según las especificaciones de su computadora. Prueba si funciona para ti porque funcionó para mí. :)

0

Es la segunda vez que tengo este problema, simplemente cambie la configuración de compilación de este proyecto. Haga clic derecho en el nombre de su proyecto -> [propiedades] -> [compilador java] -> [Habilitar configuración específica del proyecto] -> configure [nivel de cumplimiento del compilador] en 1.7

Eclipse tiene su propio compilador, no importa qué versión de javac (jdk) en su sistema, por lo que debe configurar la versión del compilador de eclipse en primer lugar.

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

Cuestiones relacionadas