Я создал работающую банку с версией 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 в моем проекте и на сервере.
Не было версии 1.5.0.07
. В 2007 году было выпущено обновление Java 5.0 7, которое имело внутреннюю версию 1.5.0_07
. Учитывая, что этой версии более десяти лет, я бы заподозрил ошибку и использовал новое обновление. Последним публичным обновлением Java 5.0 было «обновление 85», которое, как мне кажется, исправило несколько ошибок.
@PeterLawrey Я не могу обновить версию Java до 85 на сервере
@PeterLawrey, также я не нашел update 85
, вы имели в виду update 22
?
@ernest_k Я использовал классы java из веб-службы, в которых я не знаю версию java, как вы думаете, проблема в этих классах?
Хороший момент, обновления после 22 не были общедоступными.
Более новые версии Java сообщают вам, что это за плохое магическое число, которое дает вам ключ к разгадке, поэтому я бы сказал, что что-то очень не так, если это невозможно, но, учитывая, что этому более 10 лет, возможно, сообщение об ошибке было не очень Тогда хорошо.
@PeterLawrey Я развертываю его на сервере, который скомпилирован с java 1.8, и он отлично работает
@mak_doni, поэтому класс, скорее всего, был создан для версии после Java 5.
Это не может быть сложно. Либо вы используете несовместимую версию Java, либо один из ваших классов (может быть сторонними библиотеками) был скомпилирован для более новой версии Java.