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,那么您应该没问题。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 授权。