java.lang.ClassFormatError - PullRequest
       51

java.lang.ClassFormatError

2 голосов
/ 09 марта 2012

Мне нужно разработать образец приложения, развернуть его в Linux и протестировать.

Проблема в том, что я получаю

Exception in thread "main" java.lang.ClassFormatError: com.tata.topSamples.QuoteData (unrecognized class file version)
   at java.lang.VMClassLoader.defineClass(libgcj.so.7rh)
   at java.lang.ClassLoader.defineClass(libgcj.so.7rh)
   at java.security.SecureClassLoader.defineClass(libgcj.so.7rh)
   at java.net.URLClassLoader.findClass(libgcj.so.7rh)
   at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
   at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
   at gnu.java.lang.MainThread.run(libgcj.so.7rh)

Погуглив, я обнаружил, что вы скомпилировали банку с более новой версией Java, чем та, что установлена ​​на вашем компьютере с Linux

В моей среде Windows у меня версия 1.6, а в среде Linux версия java 1.4.2.

Как мы можем устранить эту ошибку?

Ответы [ 2 ]

4 голосов
/ 09 марта 2012

Скажите, пожалуйста, как мы можем решить эту ошибку ??

Либо скомпилируйте с флагами -target 1.4 и -source 1.4, либо обновите до более поздней версии Java на вашем Linux-компьютере. (Обратите внимание, что использование этих флагов позволяет сохранить более свежую версию JDK на вашем компьютере с Windows.)

Итак:

javac -target 1.4 -source 1.4 Foo.java Bar.java

У вас есть для использования GCJ вместо (скажем) OpenJDK ?

0 голосов
/ 09 марта 2012

Обновите версию в своей среде Linux или соберите ее с 1.4.2 для Windows.

...