【问题标题】:Runtime MQ and Java version mismatch issue运行时 MQ 和 Java 版本不匹配问题
【发布时间】:2018-09-28 18:04:38
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 如果显示为 51,则至少有一个依赖项是使用 Java 7 编译的。Java 可能向后兼容,但不向前兼容

标签: java ibm-mq


【解决方案1】:

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

【讨论】:

  • 是的,您对版本不匹配的解释是绝对正确的,但是由于我的限制,我无法将 Java 版本升级到 1.7。我必须找到解决问题的方法,以保持现有设置完好无损。所以我刚刚在我的 weblogic 类路径中使用了旧的 MQ 7 jar,同时连接到 MQ 服务器(版本 8),这实际上解决了我的问题。非常感谢您的时间。编码快乐!!!
【解决方案2】:

@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 参考中的那个路径解决了我的问题。

【讨论】:

  • 解决方案上的几个点。 IBM MQ 小于 8 的所有版本均已终止 IBM 支持(7.5 是截至 2018 年 4 月 30 日的最后一个版本),因此除非您的客户有扩展支持合同,否则他们将很难通过 PMR 流程获得任何 MQ 的支持与使用旧 jar 的应用程序相关的 jar 或 MQ 队列管理器问题。
  • 另一个评论是,在 MQ v8 之前,IBM 不支持将 jar 文件移出安装位置(例如 /opt/mqm/java/lib),从 v8 开始支持。对于 MQ 7.5,Weblogic 等应用程序服务器支持的是资源适配器(打包为 rar),尽管您仍然会遇到我在其他评论中提到的相同支持问题。 Weblogic 应该能够支持使用 rar 将 JMS 提供程序安装为 RA。
  • 7.5.0.9 RA 的下载链接:Fix Central -> 7.5.0.9-WS-MQ-Java-InstallRA
猜你喜欢
  • 2015-07-07
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 2011-10-13
  • 2017-09-16
  • 2016-07-31
  • 1970-01-01
  • 2011-05-08
相关资源
最近更新 更多