我们最近将代码升级到Java 8.作为其中的一部分,MQ也升级到了MQ 9.我们之前使用了两个组件jms(7.0.1.6)和jmqi(7.0.1.6)。 现在我们用MQ 9.0.0.0 JAR的allclient和tracecontrol替换了两个jar。
2017-10-24 02:30:07 INFO server.SqlService<start:29> - SQL
Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/JMSRuntimeException
at com.ibm.mq.jms.MQDestination.<clinit>(MQDestination.java:71)
at com.epo.core.server.config.LdapConfig.getQueue(LdapConfig.java:213)
at com.epo.core.server.MqService.start(MqService.java:77)
at com.epo.core.service.ServiceGroup.start(ServiceGroup.java:90)
at com.epo.core.service.ServiceGroup.startAll(ServiceGroup.java:76)
at com.epo.core.service.ServiceGroup.start(ServiceGroup.java:70)
at com.epo.server.dispatcher.DispatcherProcess.initializeServices(DispatcherProcess.java:380)
at com.epo.server.dispatcher.DispatcherProcess.run(DispatcherProcess.java:320)
at com.epo.server.dispatcher.DispatcherProcess.main(DispatcherProcess.java:200)
Caused by: java.lang.ClassNotFoundException: javax.jms.JMSRuntimeException
at java.net.URLClassLoader.findCl`enter code here`ass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 9 more
请告诉我为什么收到NoClassDefFoundError
。
答案 0 :(得分:0)
你得到了例外:
driver.get("automationpractice.com/index.php"); driver.findElement(By.linkText("Sign in")).click(); driver.findElement(By.id("email_create")).sendKeys("test@test.com"); driver.findElement(By.id("SubmitCreate")).click(); //driver.findElement(By.name("firstname")).sendKeys("dsdsd"); driver.findElement(By.name("customer_firstname")).sendKeys("sadsa");
因为您的类路径上没有JMS v2.0 jar。您可能仍在使用JMS v1.1 jar。
查看应用程序如何配置其Java类路径以纠正问题。
请注意,如果您没有复制MQ客户端库,并且刚刚从真正的MQ客户端安装中引用了Java classapth上的com.ibm.mq.allclient.jar文件,那么就不会出现此问题。 JMS v2.0 jar将与MQ_INSTALLATION_DIR / java / lib目录中的allclient jar一起存在,并将被自动地拉入。
答案 1 :(得分:0)
如a_cornish_pasty所述,您可能错过了jms.jar或者有旧版本。
对于 IBM MQ Jlasses for JMS ,您可以在IBM MQ v9知识中心页面上找到所需文件列表&#34; What is installed for IBM MQ classes for JMS&#34;:
可重新定位的JAR文件
在企业中,可以将以下文件移动到需要为JMS运行IBM MQ类的系统:
- com.ibm.mq.allclient.jar
- com.ibm.mq.traceControl.jar
- jms.jar
- fscontext.jar
- providerutil.jar
- Bouncy Castle安全提供程序和CMS支持jar
如果您的应用程序使用文件系统上下文执行JNDI查找,则需要fscontext.jar和providerutil.jar文件。
需要Bouncy Castle安全提供程序和CMS支持jar文件。有关更多信息,请参阅对非IBM JRE的支持。
请注意,Redistributable客户端中仅包含com.ibm.mq.allclient.jar
,jms.jar
和Bouncy Castle安全提供程序和CMS支持jar,但所有这些都包含在Java All客户端中。您也在运行9.0.0.0,我建议您转到9.0.0.2。您可以在Fix Central上找到Redistributable和Java All客户端。