java.lang.NoSuchMethodError
常见问题解答 > 错误 > 异常 > java.lang.NoSuchMethodError
如果您遇到类似的错误
java.lang.NoSuchMethodError:
javax.jms.Session.createConsumer(Ljavax/jms/Destination;)Ljavax/jms/MessageConsumer;
或者
java.lang.AbstractMethodError:
javax.jms.ConnectionFactory.createConnection()Ljavax/jms/Connection;
修复
您的类路径中可能存在旧的 JMS 1.0.2b 版本的 JMS API。这是因为 JMS 1.1 中添加了各种方法来以多态方式处理目的地(例如,从上面堆栈跟踪中所示的 Destination 创建消费者)。
请将 JMS 1.1 jar 文件添加到您的容器/类路径中,然后重试。
添加到正确的类路径
如果 JMS 1.0.2b 类来自您的应用程序服务器,您可能需要将 JMS 1.1 添加到您的引导类路径,以确保 JMS 1.1 类优先于容器提供的类。
请注意,对于 JMS API 用户来说,JMS 1.1 完全向后兼容。升级到 JMS 1.1 的唯一问题是,任何仅实现 JMS 1.0.2b 且未实现 JMS 1.1 的 JMS 提供程序将无法正常工作;但是,如果您使用的是 ActiveMQ Classic,那么您应该没问题。