运行时 MQ 和 Java 版本不匹配问题

Runtime MQ and Java version mismatch issue

我的 Java 代码在 jdk 1.6 中编译。

我在我的项目构建路径中使用 MQ jar 文件(来自 MQ 版本 8.0)。

我的应用程序服务器运行 jdk 1.6。

服务器安装了MQ 8.0版本。

现在,当我在服务器中部署我的应用程序时,出现如下错误:

java.lang.UnsupportedClassVersionError" and errors related to major version 50, 51 etc.

我理解版本的概念,但我有点困惑为什么在运行时会发生版本不匹配,因为在类路径中它引用与项目构建期间相同的 JAR 文件。是因为 MQ jar 是在 51 中编译的,它的版本比 50 高吗?请告知这里可以做什么。

要使用 IBM MQ v8 和更高版本附带的 jar 文件,您必须使用 Java 7 或更高版本。 IBM 文档表明,从 MQ v8 及更高版本开始,用于 Java 和 JMS 的 IBM MQ classes 是使用 Java 构建的 7. Oracle 文档表明 classes 使用 [=32] 构建=] 7 不能与 Java 6 一起使用。请参阅下面的参考资料:

@JoshMc 对 java 和 mq jar 以及所有版本不匹配的解释是绝对正确的。

我想补充一点,虽然我可以通过看到 51 和 50 之间的不匹配来理解错误发生时的情况,但我的问题是以某种方式连接到 MQ 并使应用程序 运行 而无需更改现有装置。这就是我无法将 java 升级到 JDK 1.7 的原因。

但是我通过在 Weblogic Server 的类路径中使用旧的 MQ 7 jar 解决了我的问题。因为我的应用程序表现得像客户端,所以在使用 java 6 构建的 MQ jar 连接到版本 8 的 MQ 服务器时不会有任何问题。所以我刚刚复制了旧的 MQ 7 jar一个文件夹并在我的 Weblogic CLASSPATH 引用中使用该路径,这解决了我的问题。