UnsupportedClassVersionError: плохая основная версия Jvmcfre003 в WebSphere AS 7

Я получаю эту ошибку

java.ленг.UnsupportedClassVersionError: jvmcfre003 плохая основная версия; class=map / CareMonths, offset=6

Java-компилятор моего Eclipse имеет значение 1.6 и мой установленный Java SDK в C:Program Files is 1.6.0, но все же я получаю эту ошибку при установке моего приложения на Webshere Application Server V7.

что значит offset=6 в смысле? Я хочу скомпилировать с помощью Java 6, а Websphere 7 поддерживает Java 6.

Я вижу, что JDK в каталоге IBM, где установлен сервер, - это Java 7. Это то, что вызывает это? ....но снова компилятор Eclipse моей рабочей области установлен в Java 1.6.

12 ответов


WebSphere Application Server V7 поддерживает платформа Java, Стандартное издание (Java SE) 6 (см. спецификации и документация API в сетевом развертывании (все операционные системы), Информационный центр версии 7.0), и это с выпуск V8.5 когда Java 7 поддерживается.

Я не смог найти документацию Java 6 SDK и мог только проконсультироваться сообщения IBM JVM на Java 7 Windows документация. Увы, я также не смог найти сообщение об ошибке в документации.

С java.ленг.UnsupportedClassVersionError is "бросается, когда виртуальная машина Java пытается прочитать файл класса и определяет, что основные и второстепенные номера версий в файле не поддерживаются.", вы столкнулись с проблемой создания приложения с более поздней версией Java, чем та, которая поддерживается средой выполнения, т. е. WebSphere Сервер Приложений 7.0.

Я могу ошибаться, но я думаю, что смещение=6 в сообщении должно сообщить вам, какая позиция вызвала проблему несовместимости. Это не имеет значения для тебя, для меня, и для многих других людей, но некоторые могут найти это полезным, esp. когда они сами генерируют байт-код.

запустить versionInfo


в этой панели настроек Eclipse вы можете изменить совместимость компилятора с 1.7 на 1.6. Это решило аналогичное сообщение, которое я получал. Для Eclipse он находится в разделе: Preferences - > Java - > Compiler: 'compiler compliance level'


вы также должны убедиться, что вы установили соответствующие аспекты проекта Java версии. Свойства модуля - > фасеты проекта - > Java 1.6 должны быть проверены


эта ошибка может возникнуть, если проект компилируется с JDK 1.6 и у вас есть зависимости, скомпилированные с Java 7.


Я получал эту ошибку в websphere 8.5:

java.ленг.UnsupportedClassVersionError: jvmcfre003 плохая основная версия; class=com/xxx / Whatever, offset=6

У меня был уровень JDK проекта 1.7 в eclipse и was8 по умолчанию работает на JDK 1.6, поэтому было столкновение. Мне пришлось установить дополнительный SDK 1.7 на мой сервер websphere, а затем проблема исчезла. Я думаю, что я мог бы также установить свой уровень проекта до 1.6 в eclipse, но я хотел кодировать 1.7.


Я получал ту же ошибку. В Фасетах проекта моего проекта Java уровень компиляции Java был установлен в 1.7, тогда как WebSphere Application Server v7.0 имел состав времени выполнения JRE v1.6; Установка уровня компиляции Java на 1.6 в Фасетах проекта избавилась от ошибки. Мне не пришлось менять уровень соответствия компилятора, хотя это все еще 1.7. Надеюсь, это поможет!


сначала вы должны проверить основную версию составлен проблематично , в вашем случае map/CareMonths. См.ответ как это сделать.

WAS7 использует Java 6 (как сказал Яцек), а Java 6 использует основную версию 50, поэтому вы должны скомпилировать свой проект с Java 6. Как установить правильную версию компилятора Java, зависит от вашей IDE (например, Eclipse, IntelliJ) или инструмента сборки (например, Maven, Ant).


Я получал ту же ошибку даже после выполнения вышеуказанных изменений, и то, что я сделал, это

щелкните правой кнопкой мыши на проекте- > свойства - >компилятор java - >уровень соответствия компилятора - >изменяет его на 1.6

Это изменение особенно характерно для проекта. Это должно, надеюсь, работать.


Если журнал указывает java.ленг.UnsupportedClassVersionError: JVM * * * * плохая основная версия.

тогда код и сервер не компилируются с той же версией JDK.

чтобы исправить это, переключите версию JDK либо в коде, либо в JDK сервера.

попробуйте это:- В приведенном ниже случае использования im переключается на 1.7_64 (JDK 1.7 64 бит)

c:\IBM\WebSphere\WSRR\v8.5\bin\managesdk.летучая мышь -enableProfile - profileName WSRRSrv01-sdkname 1.7_64


Если вы используете maven, попробуйте добавить в pom.в XML

<properties>
    ...
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    ...
</properties>

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


в eclipse перейдите в проект- > свойства - >путь сборки Java - >порядок и экспорт. Если вы используете несколько JREs, попробуйте как jdk и ibm. Заказ должен начинаться с jdk, а затем IBM. Так был решен мой вопрос.


я исправил это, настроив env. переменную JAVA_HOME.