2012-02-01 7 views
6

При попытке вызвать EJB с использованием Netbeans (с использованием jdk1.7) от клиента с использованием Eclipse IDE (с помощью jdk1.6), я получаю следующее error-неподдерживаемый класс Version 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) 

Любой решение этой проблемы?

+1

Смотрите этот ... Http: //stackoverflow.com/questions/6066103/what-is-the-reason-for-unsupportedclassversionerror –

ответ

14

Попробуйте изменить целевую версию JRE на 1.6 в конфигурации сборки.

+0

@ RaviG- как я должен изменить "Конечное JRE версии до версии 1.6 в конфигурации сборки "в Eclipse. –

+1

Подробное объяснение доступно по адресу: http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-JREs.htm –

1

Проблема была: я звонил EJB, используя jdk1.7 от клиента, который использовал jdk1.6. Переключил jdk1.7 на jdk 1.6, он сработал. или можно переключить jdk1.6 на 1.7, тогда это также сработает. Заключение - вы можете вызвать любой EJB, который использует одну и ту же версию или нижнюю версию jdk в качестве вызывающего.

1

У меня была такая же проблема, но я использовал текстовую панель. Решение было довольно простым. Попробуйте помещать класс в конфликт в другом месте (например, в папку с резервной копией) или просто просто удалите его, если он не существует в том же каталоге. Затем попробуйте компилировать java-файл, чтобы вы могли создать новый класс, соответствующий спецификации вашего компьютера. Попытайтесь, если это сработает для вас, потому что это сработало для меня. :)

0

Это второй раз, когда у меня возникла проблема, просто измените конфигурацию сборки этого проекта. Щелкните правой кнопкой мыши название вашего проекта -> [свойства] -> [java compiler] -> [Включить специальные настройки проекта] -> установите [уровень соответствия компилятора] на 1.7

У Eclipse есть собственный компилятор, нет укажите, какая версия javac (jdk) в вашей системе, поэтому вы должны сначала настроить версию компилятора eclipse.

Ссылка: java.lang.UnsupportedClassVersionError: Bad version number in .class file?