2016-03-03 1 views
1

В моем проекте XPages я хочу использовать стороннюю библиотеку Java под названием ActiveMQ. В Domino Designer я добавляю файл jar, содержащий все классы, в путь сборки. Использование классов в моем собственном Java-коде (не Java-агенте) работает, и я могу создать приложение XPages без каких-либо ошибок.Получение UnsupportedClassVersionError при использовании сторонней библиотеки Java

Однако, когда я пытаюсь запустить свои Java-функции на XPage я получаю UnsupportedClassVersionError:

java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; Class=org/apache/activemq/ActiveMQSslConnectionFactory, Offset=6

следует NoClassDefFoundError:

java.lang.NoClassDefFoundError: org/apache/activemq/ActiveMQSslConnectionFactory

, который, вероятно, только последующая встречающаяся ошибка из-за к первому (исправьте меня, если я ошибаюсь).

UnsupportedClassVersionError предлагает, чтобы сторонняя библиотека была построена с более высокой версией Java, чем то, что используется на сервере Domino (Domino 9.0.1 FP4). Выполнение System.getProperty("java.version") возвращает 1.6.0 (= Java 6). Согласно release notes, сторонняя библиотека Java (ActiveMQ 5.8.0) была «скомпилирована с jdk6 и подтверждена с помощью jdk7».

Может кто-нибудь сказать мне, почему я получаю эту ошибку, хотя библиотека была построена с той же версией Java, что и для запуска моего кода?


PS: Выполнение java -version в командной строке компьютера сервера возвращает Java версии 1.7.0, так как дополнительный JRE7 был установлен на этом компьютере. Тем не менее, версия, которая «должна» иметь значение для исполнения на XPage, представляет собой версию Domino JVM (которая равна 1.6.0). Еще я хотел упомянуть об этом ...

+4

Это не совместимо с Java 6. Попробуйте серии 5.10 вместо => http://activemq.2283324.n4.nabble.com/is-activemq-5-11-1 -compatible-with-java-1-6-td4692124.html –

+0

@SvenHasselbach: Прежде чем отправлять мой вопрос здесь, я уже прочитал связанный с ним поток, но поскольку речь шла о том, что ActiveMQ 5.11 не поддерживает Java 6, я только убедился, что версия, которую я использую, ниже этого - вот почему я использовал версию 5.8: заметки о выпуске явно говорят, что она скомпилирована с JDK6 ... Я хочу сказать: я не понимаю, почему 5.8 не работает, но странно 5.10 РАБОТАЕТ. Поэтому большое спасибо за ваш комментарий - он решил мою проблему. Не могли бы вы написать комментарий в качестве ответа, потому что я хотел бы поблагодарить вас за вашу помощь. –

ответ

5

Domino до 9.0.1 использует JVM 1.6 (или 6.0 в зависимости от того, как вы рассчитываете). Для следующих выпусков в этом году ожидается переход на Java 1.8 (8.0).

Чтобы использовать ActiveMQ с JVM 1.6, вам необходимо придерживаться versions up to 5.10, который вы можете скачать с the archive pages (или Maven).

Дайте нам знать, как она идет

+0

Спасибо за ваш ответ. Я знал, что мне нужно использовать версию ActiveMQ <5.11, поэтому я использовал 5.8. Из-за комментария от @SvenHasselbach я попробовал его с версией 5.10, и по неизвестным мне причинам он работает сейчас. –

+2

@ sven-hasselbach - главный специалист. Всегда полезно – stwissel