MQSeries error com.ibm.mq.jmqi.CustomCharsetProvider not a s



我有一个现有的java批处理在Windows上运行,它写入MQSeries队列。在 v7 中工作正常,但在使用 v8.0.0.3 时失败。

使用这些 jar 文件:com.ibm.mq.allclient-8.0.0.3.jarjavax.jms-api-2.0.1.jar尝试同时运行两者并仅运行所有客户端jar,但反复出现此错误:

Exception in thread "main" java.util.ServiceConfigurationError: java.nio.charset.spi.CharsetProvider: Provider com.ibm.mq.jmqi.CustomCharsetProvider not a subtype
               at java.util.ServiceLoader.fail(ServiceLoader.java:239)
               at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
               at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
               at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
               at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
               at java.nio.charset.Charset$1.getNext(Charset.java:352)
               at java.nio.charset.Charset$1.hasNext(Charset.java:365)
               at java.nio.charset.Charset$2.run(Charset.java:410)
               at java.nio.charset.Charset$2.run(Charset.java:407)
               at java.security.AccessController.doPrivileged(Native Method)
               at java.nio.charset.Charset.lookupViaProviders(Charset.java:406)
               at java.nio.charset.Charset.lookup2(Charset.java:477)
               at java.nio.charset.Charset.lookup(Charset.java:464)
               at java.nio.charset.Charset.forName(Charset.java:528)
               at com.ibm.mq.jmqi.system.JmqiCodepage$JmqiCodepageFactory.initializeCodepage(JmqiCodepage.java:194)
               at com.ibm.mq.jmqi.system.JmqiCodepage$JmqiCodepageFactory.getByName(JmqiCodepage.java:181)
               at com.ibm.mq.jmqi.system.JmqiCodepage.getJmqiCodepage(JmqiCodepage.java:661)
               at com.ibm.mq.jmqi.system.JmqiCodepage.getJmqiCodepage(JmqiCodepage.java:637)
               at com.ibm.mq.jmqi.JmqiEnvironment.getJmqiCodepage(JmqiEnvironment.java:294)
               at com.ibm.mq.jmqi.JmqiEnvironment.lookupDefaultCharset(JmqiEnvironment.java:361)
               at com.ibm.mq.jmqi.JmqiEnvironment.<init>(JmqiEnvironment.java:262)
               at com.ibm.mq.jmqi.system.JmqiSystemEnvironment.<init>(JmqiSystemEnvironment.java:76)
               at com.ibm.mq.jmqi.JmqiFactory.getInstance(JmqiFactory.java:122)
               at com.ibm.mq.internal.MQCommonServices.<clinit>(MQCommonServices.java:146)
               at com.ibm.mq.MQSESSION.getJmqiEnv(MQSESSION.java:141)
               at com.ibm.mq.MQSimpleConnectionManager.<init>(MQSimpleConnectionManager.java:95)
               at com.ibm.mq.MQEnvironment.<clinit>(MQEnvironment.java:569)

我的代码调用了 MQ环境

这通常发生在存在由相同类组成的冲突 MQ jar 时。在运行应用程序之前,您必须删除不必要的 mq jar

使用 MQClient 中嵌入的 java 版本执行。

问题是对于

您配置的 CCSID(代码页(,字符集未正确解析并使用 CustomCharsetProvider,但它没有实现正确的接口,在我看来这是 IBM 的错误(。

您有两种选择可以修复它:

  1. 将不同的 CCSID(例如 1208 即 UTF-8(作为MQConstants.CCSID_PROPERTY传递到您所在的代码中创建作为哈希映射属性传递的 MQQueueManager

  2. 或在 MQ 服务器配置中更改 CCSID(例如将 1208 放入 UTF-8(

Check os Lang encoding : set |grep -i Lang

现在使用跟踪检查代码编码

如果编码不匹配,则传入 vmargs

-

Defile.encoding=utf-8

相关内容

  • 没有找到相关文章

最新更新