在不更改WAR文件的情况下将JAR添加到WAR的类路径中

时间:2012-05-07 11:25:40

标签: java tomcat jar classpath war

我在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 id="warService" class="com.mystuff.MyService" />
  • 替换了bean引用
  • Spring因java.lang.NoClassDefFoundError:com.war.Service
  • 而失败

3 个答案:

答案 0 :(得分:1)

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

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

根据您的修改

  1. 你的罐子有问题
  2. 您在应用程序上下文中错误地认定了完全限定的类名称
  3. 我的mysql-connector-java-5.0.8-bin文件夹中碰巧有lib jar。只是为了测试我把它放在我的应用程序上下文中:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

虽然不推荐,但您可以在此方案中使用Tomcat“Common”类加载器。

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