我有一个Spring web应用程序,我试图在tomcat 7上部署。我在tomcat 7启动时遇到以下错误:
引起:
java.lang.ClassNotFoundException:javax.jms.JMSContext
这是因为tomcat找不到应用程序的javaee-api-7.0.jar
文件夹中存在的WEB-INF/lib
。但是,如果我将其复制到tomcat/lib
,则会修复错误,并且tomcat可以加载该类。
但我不想将任何额外的jar复制到tomcat / lib。有人可以在这里帮助,以便tomcat可以在应用程序的lib中找到上面的jar。我错过了任何类路径处理程序条目吗?我没有明确添加任何内容。
答案 0 :(得分:16)
当我使用Tomcat-7部署我的应用程序时,从spring-3.0迁移到spring-5.0时,我也遇到了同样的问题。我在 pom.xml 文件中添加了maven依赖项,然后解决了。
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency>
我发现的根本原因是 spring-jms-5.0.2.RELEASE.jar 提供的 UserCredentialsConnectionFactoryAdapter 类使用了 JMSContext 类内部。我在 spring-jms-3.2.4.jar 中使用的 jms-1.1.jar 中没有此类。
所以我将 jms-1.1.jar 替换为 javax.jms-api-2.0.1.jar
我建议你根据春季版本添加/升级你的jms jar。 希望这有效!
答案 1 :(得分:0)
在JDK 11.0.2的 Apache karaf 4.2.7 环境中,我遇到了同样的问题,在我的情况下,异常打印
原因:java.lang.ClassNotFoundException:找不到javax.jms.JMSContext ,由org.apache.geronimo.specs.geronimo-jms_1.1_spec
它可以通过安装: 捆绑:安装mvn:javax.jms / javax.jms-api / 2.0.1