Мы работаем с 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, у нас все еще есть та же проблема.