使用第三方 Java 库时出现 UnsupportedClassVersionError

Getting UnsupportedClassVersionError when using third-party Java library

在我的 XPages 项目中,我想使用名为 ActiveMQ 的第三方 Java 库。在 Domino Designer 中,我将包含所有 类 的 jar 文件添加到构建路径。在我自己的 Java 代码(不是 Java 代理)中使用 类 可以正常工作,我可以构建 XPages 应用程序而不会出现任何错误。

但是,当我尝试在 XPage 上 运行 我的 Java 函数时,我得到一个 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") returns 1.6.0 (= Java 6)。根据 release notes 第三方 Java 库 (ActiveMQ 5.8.0) 已经“用 jdk6 编译并用 jdk7 验证”。

任何人都可以告诉我为什么我会收到此错误,即使库是使用我用于 运行 我的代码的相同 Java 版本构建的?


PS: 在服务器计算机的命令行中执行java -version returns Java 版本1.7.0 因为该计算机上已经安装了额外的JRE7。然而,"should" 与 XPage 上的执行有关的版本是 Domino JVM 的版本(即 1.6.0)。我还是想提一下...

Domino 9.0.1 使用 JVM 1.6(或 6.0,具体取决于您的计算方式)。预计今年晚些时候的下一个版本将升级到 Java 1.8 (8.0)。

要将 ActiveMQ 与 JVM 1.6 一起使用,您需要坚持使用 versions up to 5.10, which you can download from the archive pages(或 Maven)。

告诉我们进展如何