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. Так был решен мой вопрос.