我在 Tomcat 中部署了一个 WAR 文件。另外我还有一个 JAR 文件。
是否可以在不改变WAR文件的情况下,将JAR文件中的类提供给WAR文件中的服务,或者是否已经添加到WAR的WEB-INF/lib中?
我已经尝试将 JAR 添加到 lib/
,但它不起作用。 Spring 在启动时失败并出现 org.springframework.beans.factory.BeanCreationException » java.lang.NoClassDefFoundError。
编辑
我意识到我可能让自己成为一个无法解决且在架构上很丑陋的问题。事情是这样的:
- WAR 有一个引用
<bean id="warService" class="com.war.Service" />
- 我的 JAR 有一个扩展 com.war.Service 的类 com.mystuff.MyService
- 我已将 bean 引用替换为
<bean id="warService" class="com.mystuff.MyService" />
- Spring 失败并返回 java.lang.NoClassDefFoundError: com.war.Service
最佳答案
或者您可以将它(您的 jar 文件)放在 lib
文件夹下的 Tomcat 根目录中。检查一下:
http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html
根据您的修改
- 你的 jar 有问题
- 您在应用程序上下文中弄错了完全限定的类名
我的 lib
文件夹中恰好有 mysql-connector-java-5.0.8-bin
jar。只是为了测试,我把它放在我的应用程序上下文中:
<bean id="driver" class="com.mysql.jdbc.Driver" />
作为魅力工作,检查上面的两个案例
关于java - 在不改变 WAR 文件的情况下将 JAR 添加到 WAR 的类路径中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481238/