0

我在 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
4

3 回答 3

1

或者您可以将它(您的 jar 文件)放在lib文件夹下的 Tomcat 根目录中。检查一下:

http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html

根据您的编辑

  1. 你的罐子有问题
  2. 您在应用程序上下文中错误地使用了完全限定的类名

我的文件夹里碰巧有mysql-connector-java-5.0.8-binjar 。lib只是为了测试,我把它放在我的应用程序上下文中:

<bean id="driver" class="com.mysql.jdbc.Driver" />

作为魅力,检查上面的两个案例

于 2012-05-07T11:28:51.930 回答
0

您可以使用 tomcat 的 lib 目录,但添加的所有 jar 都已为您服务器中的所有应用程序共享。

于 2012-05-07T11:29:38.597 回答
0

虽然不推荐,但您可以在这种情况下使用 Tomcat“通用”类加载器。

http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html

于 2012-05-07T11:31:12.663 回答