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

时间:2018-09-25 07:31:30

标签: java ibm-mq

我用jdk 1.6编译了Java代码。

我在项目构建路径中使用MQ jar文件(从MQ版本8.0开始)。

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

服务器中安装了MQ版本8.0。

现在,当我将应用程序部署到服务器中时,出现了类似错误:

  

java.lang.UnsupportedClassVersionError”和与主要错误有关的错误   版本50、51等。

我在这里理解了版本的概念,但是我很少感到困惑,因为为什么在运行时中会发生版本不匹配的情况,因为在类路径中它引用的项目与项目构建期间的JAR文件相同。是否由于MQ罐已在高于50的版本中进行了编译而在51中进行编译?请告知可以在这里做什么。

2 个答案:

答案 0 :(得分:1)

要使用IBM MQ v8和更高版本随附的jar文件,您必须使用Java 7或更高版本。从MQ v8起的IBM文档,以及后来的Java和JMS的IBM MQ类是使用Java 7构建的。使用Java 7构建的类的Oracle文档不能与Java 6一起使用。请参见以下参考资料:

答案 1 :(得分:0)

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

我想补充一点,尽管我可以通过看到51和50之间的不匹配来理解该错误,但是我的问题是要以某种方式连接到MQ,并使该应用程序在不更改现有安装的情况下运行。这就是为什么我无法将Java升级到JDK 1.7的原因。

但是,我通过在Weblogic Server的类路径中使用旧的MQ 7 jar解决了我的问题。因为当我的应用程序表现为客户端时,使用MQ 6(已使用Java 6构建)连接到版本8的MQ服务器时,将不会出现任何问题,因此我只是将旧的MQ 7 jar复制到了文件夹中并使用我的Weblogic CLASSPATH参考中的该路径即可解决我的问题。