Ошибка неподдерживаемой версии класса - PullRequest
6 голосов
/ 01 февраля 2012

При попытке вызвать EJB, созданный с использованием NETbeans (с использованием jdk1.7), из клиента, созданного с использованием Eclipse IDE (с использованием jdk1.6), я получаю следующую ошибку-

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)

Есть ли решение этой проблемы?

Ответы [ 4 ]

14 голосов
/ 01 февраля 2012

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

1 голос
/ 14 октября 2012

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

1 голос
/ 17 апреля 2012

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

0 голосов
/ 19 февраля 2014

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

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

Ссылка: java.lang.UnsupportedClassVersionError: Неверный номер версии в файле .class?

...