2016-03-03 3 views
1

У меня есть файл jar с использованием Ant в ОС Windows с использованием Oracle Java 1.7. Когда я раскрываю банку на моей машине CentOS (который WAS 8.5.5) работает на открытом JDK 1.8, получаем следующее сообщение об ошибке:JVMCFRE003 bad major version

java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=com/ac/ps/ft/home/ad/cr/testclass, offset=6 
at java.lang.ClassLoader.defineClassImpl(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:295) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:154) 
at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:853) 
at com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:763) 
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:586) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:690) 
at java.lang.Class.forNameImpl(Native Method) 
at java.lang.Class.forName(Class.java:182) 

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

+0

Можете ли вы втрое проверить свою версию java в сообщениях.log? Ваше время работы, вероятно, отличается/старше, чем вы думаете. – covener

+0

Добавляя к этому, JDK, используемый для компиляции, рассказывает нам некоторые, но не все. Если у вас есть редактор шестнадцатеричных файлов, вы можете окончательно увидеть уровень соответствия .class, посмотрев на смещение байтов 6 и 7: https://en.wikipedia.org/wiki/Java_class_file#General_layout – ewhoch

+0

@covener Трассировка стека говорит об этом полный профиль, поэтому заголовок сообщения будет в SystemOut.log. Я подозреваю, что используется по умолчанию Java 6. –

ответ

4

JVMCFRE003 выглядит как код ошибки IBM Java, поэтому я не думаю, что ваш сервер приложений работает с Open JDK. Вы можете подтвердить версию java, используемую при просмотре верхней части журнала SystemOut.

Если вы используете традиционный сервер приложений Websphere (а не свободу), он всегда будет использовать JRE, установленный с сервером приложений.

В этом случае используйте диспетчер установки, чтобы убедиться, что у вас установлен соответствующий уровень Java, затем используйте managesdk command, чтобы включить его.