Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ClassCastException:com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory无法强制转换为javax.jms.QueueConnectionFactory_Java_Lookup - Fatal编程技术网

java.lang.ClassCastException:com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory无法强制转换为javax.jms.QueueConnectionFactory

java.lang.ClassCastException:com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory无法强制转换为javax.jms.QueueConnectionFactory,java,lookup,Java,Lookup,我在尝试查找JNDI上下文时遇到以下异常,尽管在这个站点上已经回答了一个类似的问题,认为类路径中缺少的tibjms.jar是根本原因 java.lang.ClassCastException: com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory cannot be cast to javax.jms.QueueConnectionFactory at com.xxx.host.tibco.ConnectionHandler$

我在尝试查找JNDI上下文时遇到以下异常,尽管在这个站点上已经回答了一个类似的问题,认为类路径中缺少的
tibjms.jar
是根本原因

java.lang.ClassCastException: com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory cannot be cast to javax.jms.QueueConnectionFactory
at com.xxx.host.tibco.ConnectionHandler$JMSConnectionFactory.<init>(ConnectionHandler.java:337)
at com.xxx.host.tibco.ConnectionHandler.init(ConnectionHandler.java:94)
at com.xxx.host.tibco.ConnectionHandler.<init>(ConnectionHandler.java:84)
at com.xxx.host.tibco.ConnectionHandler.getInstance(ConnectionHandler.java:63)
at com.xxx.productOne.host.HostGetMemberBalanceRequest.doDecision(HostGetMemberBalanceRequest.java:42)
at com.audium.server.voiceElement.DecisionElementBase.service(DecisionElementBase.java:386)
at com.audium.server.controller.Controller.goToDecision(Controller.java:2857)
at com.audium.server.controller.Controller.goToElement(Controller.java:2687)
at com.audium.server.controller.Controller.continueCall(Controller.java:2511)
at com.audium.server.controller.Controller.goToElement(Controller.java:2742)
at com.audium.server.controller.Controller.continueCall(Controller.java:2511)
at com.audium.server.controller.Controller.doPost(Controller.java:733)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:662)

非常感谢您在故障排除方面提供的任何帮助

像这样的问题总是由不同的类装入器装入一个类(本例中为javax.jms.QueueConnectionFactory)。通常,但并非总是,不同的类装入器意味着装入类的位置不同。在调试器中,可以很容易地确定从何处依次加载类

javax.jms.QueueConnectionFactory.class.getProtectionDomain().getCodeSource().getLocation();


如果在大多数情况下,位置不同,原因会立即变得清楚。

我猜不同的类加载器加载了两次该类。

尝试在一个小型的、自包含的项目中复制该问题。粘贴一行没有代码的堆栈跟踪不会让您有多大兴趣。遵循这些准则:情况并非如此。如果同一段代码在一台服务器上工作,而在另一台服务器上不工作,那么最有可能的原因就是错误配置。如果一切都相似且没有差异,那么就没有理由对比行为。我不能排除这两台服务器之间的任何更改,但是我所验证的是,完全相同的库集从工作服务器移植到新配置的服务器。是的!我刚刚发现jms.jar在默认情况下在WEBINF文件夹中可用,并且我在common/lib中再次复制了它。移除其中一个解决了问题。。
javax.jms.QueueConnectionFactory.class.getProtectionDomain().getCodeSource().getLocation();
connectionFactory.getSuperclass()..