java.lang.UnsupportedClassVersionError: (org/json/JSONObject) неправильная основная версия со смещением = 6

В проекте я использую Websepear в качестве сервера. После добавления Json в мой проект я получаю ошибку ниже.

---Original exception---
java.lang.UnsupportedClassVersionError: (org/json/JSONObject) bad major version at offset=6
    at java.lang.ClassLoader.defineClassImpl(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:222)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:148)
    at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:526)
    at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:477)

Вот описание исключения.

 Caused by: java.lang.LinkageError: LinkageError while defining class: org.json.JSONObject
    Could not be defined due to: (org/json/JSONObject) bad major version at offset=6
    This is often caused by having a class defined at multiple
    locations within the classloader hierarchy.  Other potential causes
    include compiling against an older or newer version of the class
    that has an incompatible method signature.
    Dumping the current context classloader hierarchy:
        ==> indicates defining classloader
    ==>[0] 

ПРИМЕЧАНИЕ. Я создал и запустил свой проект на Java 6.


person Janny    schedule 03.09.2014    source источник
comment
Какая версия Java была предоставлена ​​библиотекой, с которой был построен сервер?   -  person Thomas    schedule 03.09.2014
comment
Библиотека @Thomas предоставила Java6.   -  person Janny    schedule 03.09.2014
comment
Еще одна подсказка дается описанием: вы проверили, что в вашем приложении (или, может быть, даже на сервере) есть только один jar-файл, содержащий этот класс?   -  person Thomas    schedule 03.09.2014
comment
@Thomas Как я уже упоминал, после добавления json в проект я получаю эту ошибку, поэтому я не думаю, что JSONObject дублируется в любом другом банке.   -  person Janny    schedule 03.09.2014
comment
Ну, вы добавили его в свое приложение, я думаю. Но это не означает, что на сервере еще нет библиотеки. В любом случае, вы можете перепроверить версию Java, с которой была собрана библиотека, а также наличие другой конфликтующей библиотеки. Кроме того, вы можете указать, какую библиотеку вы добавили, и точную версию, которую вы использовали. В противном случае это все еще догадки.   -  person Thomas    schedule 03.09.2014
comment
В своем предыдущем посте вы упомянули, что используете WebSphere 6.1. Этот сервер работает поверх Java 5, поэтому, если вы хотите использовать JSON в своем проекте, работающем на WAS 6.1, вам следует найти библиотеку, скомпилированную с помощью Java 5.   -  person Magic Wand    schedule 03.09.2014


Ответы (2)


Поскольку ваше приложение развернуто на сервере, проверьте, какая версия Java работает на сервере. Я предполагаю, что сервер работает на более низкой версии Java, тогда как ваш проект построен на Java-6.

person Chaitanya    schedule 03.09.2014
comment
Спасибо за ваши ценные комментарии, но не могли бы вы объяснить, почему это только для JSONObject. этот проект отлично работает без JSONObject. Будет очень полезно, если вы подробнее расскажете об этом. - person Janny; 03.09.2014
comment
это зависит от того, сколько банок у вас есть в пути к классам, в соответствии с вашим предыдущим вопросом похоже, что у вас есть только json.jar, отличный от специфичной для веб-сферы банки в пути к классам, и вы столкнулись с проблемой с этой банкой. Запуск нового кода Java на старой JVM приведет к в ошибках. - person Chaitanya; 03.09.2014

Попробуйте увеличить уровень компиляции и используйте совместимую JRE.

person JavaStack    schedule 07.01.2016