Почему мы получаем сообщение о несовпадении версии Java для наших адаптеров MobileFirst Java?

Мы работаем с MobileFirst Platform Studio 7.1, установленной поверх Eclipse Luna 4.4.2 (я считаю, что Eclipse поставляется со своим собственным встроенным компилятором Java - в соответствии со свойствами рабочей области" Уровень соответствия компилятора " установлен на 1,7).

Когда мы создаем наш .adapter файл, а затем разбираем его с помощью unzip и проверяем версию одного из .class файлов внутри с помощью file myadapter.adapter, он показывает myadapter.adapter: compiled Java class data, version 51.0, , что соответствует платформе Java 7 (1.7).

Однако, когда мы развертываем его на нашем автономном сервере MobileFirst Platform Server, работающем поверх WAS ND, мы получаем ошибку как в консоли администрирования MobileFirst, так и в журнале WAS SystemOut.log:

[11/3/15 11:56:07:166 UTC] 0000009b StatusMessage E StatusMessage createStatusMessage Preparation to deploy adapter 'MyAdapter' failed.
                         java.lang.Error: The adapter was built with a later version of Java than is used to run the server.
    at com.worklight.adapters.rest.ParentLastClassLoader.defineClass(ParentLastClassLoader.java:274)
    at com.worklight.adapters.rest.ParentLastClassLoader.defineClassFromURL(ParentLastClassLoader.java:233)
    at com.worklight.adapters.rest.ParentLastClassLoader.internalFindClass(ParentLastClassLoader.java:215)
    at com.worklight.adapters.rest.ParentLastClassLoader.loadClass(ParentLastClassLoader.java:128)

Уровень Java на сервере также равен 1,7, как показано java -version:

java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (rhel-2.3.4.1.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

Я не верю, что эта ошибка верна, если только нет какой-либо тонкости в способе проверки уровней JDK (возможно, это также касается уровня исправления?).

Как исправить эту ошибку? Есть ли способ заставить JDK в Eclipse работать на определенном уровне?

Обновление: мы только что попытались снизить уровень соответствия JDK в Eclipse до 1.6, у нас все еще есть та же проблема.


person Andrew Ferrier    schedule 03.11.2015    source источник
comment
Вы также используете OpenJDK локально? Или, может быть, Oracle Hotspot?   -  person Gergely Bacso    schedule 03.11.2015
comment
@GergelyBacso Я в замешательстве. Локально к какой машине? Как я уже сказал, я думаю, что Eclipse использует встроенный JDK для компиляции _1 _...?   -  person Andrew Ferrier    schedule 03.11.2015
comment
Под локально я имел в виду машину, на которой установлен ваш Eclipse. Eclipse имеет несколько разных версий, поэтому было бы неплохо узнать, на чем именно построены ваши классы.   -  person Gergely Bacso    schedule 03.11.2015
comment
Итак, мы используем Eclipse 4.4.2. Насколько я могу судить (изучив класс), он использует 1.7.x. Трудно сказать что-либо более точно, если вы не знаете, как узнать версию встроенного компилятора Java внутри Eclipse?   -  person Andrew Ferrier    schedule 03.11.2015
comment
Как вы собираете свой адаптер? Если это что-то вроде Ant, то он не будет использовать настройки компилятора Java Eclipse.   -  person Ordous    schedule 03.11.2015


Ответы (1)


Хорошо, тайна раскрыта. Оказывается, я ошибался; хотя на сервере был Java 1.7 JDK, рассматриваемый сервер WAS ND фактически использовал Java 1.6. Как только мы изменили уровень соответствия JDK в проекте (согласно моей первой ссылке в вопросе), .adapter был успешно развернут.

person Andrew Ferrier    schedule 03.11.2015