首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >运行时MQ和Java版本不匹配问题

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

Stack Overflow用户
提问于 2018-09-25 15:31:30
回答 2查看 1.6K关注 0票数 2

我用jdk 1.6编译了我的Java代码。

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

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

服务器上安装了MQ 8.0版。

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-28 18:04:38

@JoshMc对java和mq jars的版本不匹配的解释是完全正确的。

我想补充的是,虽然我可以通过查看51和50之间的不匹配来理解发生错误时的错误,但我的问题是以某种方式连接到MQ并使应用程序在不更改现有安装的情况下运行。这就是为什么我不能把我的java升级到JDK 1.7。

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

票数 1
EN

Stack Overflow用户

发布于 2018-09-26 07:19:44

要使用IBM MQ v8及更高版本附带的jar文件,您必须使用Java7或更高版本。MQ v8和更高版本中的文档指出,用于Java和JMS的IBM类是使用Java7构建的。Oracle文档是使用Java7构建的类不能用于Java6。有关参考,请参阅以下内容:

MQ v8.0 KC页面中的

用于Java的IBM类和用于JMS的IBM类现在是使用Java7构建的。

Java7运行时环境支持运行早期版本的类文件。

MQ v9.0 KC页面中的

从IBM MQ 8.0版开始,用于Java的IBM MQ类和用于JMS的IBM MQ类是使用Java7构建的。Java7运行时环境支持运行早期版本的类文件。

根据规范,JavaSE7的类文件版本是51,这是因为JSR292引入了invokedynamic字节码。Java 6.中不能使用JavaSE7编译器生成的版本51类文件

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52492863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档