Conflit version java: UnsupportedClassVersionError: неверный номер версии в файле .class

Я создал работающую банку с версией java 1.5.0.07, я развернул ее на сервере, который работает с той же версией java, У меня было два метода, которые используют один и тот же spring jdbc, когда я запускаю банку на сервере, первый метод работает нормально, но второй возвращает эту ошибку:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
   Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at com.auto.dao.ContractsDAO.getContractsList(ContractsDAO.java:46)
    at com.auto.main.AutoReactivation.main(AutoReactivation.java:88)

Когда я погуглил эту проблему, я обнаружил, что проблема заключается в конфликте разных Java JDK, но я не понимаю ее, потому что у меня одна и та же версия java в моем проекте и на сервере.

Это не может быть сложно. Либо вы используете несовместимую версию Java, либо один из ваших классов (может быть сторонними библиотеками) был скомпилирован для более новой версии Java.

ernest_k 27.10.2018 13:50

Не было версии 1.5.0.07. В 2007 году было выпущено обновление Java 5.0 7, которое имело внутреннюю версию 1.5.0_07. Учитывая, что этой версии более десяти лет, я бы заподозрил ошибку и использовал новое обновление. Последним публичным обновлением Java 5.0 было «обновление 85», которое, как мне кажется, исправило несколько ошибок.

Peter Lawrey 27.10.2018 13:50

@PeterLawrey Я не могу обновить версию Java до 85 на сервере

mak_doni 27.10.2018 14:10

@PeterLawrey, также я не нашел update 85, вы имели в виду update 22?

mak_doni 27.10.2018 14:23

@ernest_k Я использовал классы java из веб-службы, в которых я не знаю версию java, как вы думаете, проблема в этих классах?

mak_doni 27.10.2018 14:27

Хороший момент, обновления после 22 не были общедоступными.

Peter Lawrey 27.10.2018 14:48

Более новые версии Java сообщают вам, что это за плохое магическое число, которое дает вам ключ к разгадке, поэтому я бы сказал, что что-то очень не так, если это невозможно, но, учитывая, что этому более 10 лет, возможно, сообщение об ошибке было не очень Тогда хорошо.

Peter Lawrey 27.10.2018 14:49

@PeterLawrey Я развертываю его на сервере, который скомпилирован с java 1.8, и он отлично работает

mak_doni 27.10.2018 15:25

@mak_doni, поэтому класс, скорее всего, был создан для версии после Java 5.

Peter Lawrey 27.10.2018 16:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
9
515
0

Другие вопросы по теме