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

标签 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 引用替换为 <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

根据您的修改

  1. 你的 jar 有问题
  2. 您在应用程序上下文中弄错了完全限定的类名

我的 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/

相关文章:

java - 为什么javaFX应用程序jar可以在jdk上运行但不能在jre上运行?

java - 如何在 ubuntu 中运行一个有很多 jars 依赖的 java 文件

java - 如何在 Eclipse 中打包所需的外部库和源

java - 替换两个美元符号之间的值

java - Intellij IDEA 模块依赖

java - 我的总数没有在循环中更新

java - 将 Powermock 与 Weld 混合使用?

来自 F5 负载均衡器虚拟 IP 时,Tomcat 8.5 不提供 http 请求

java - 同一 JRE 中的 2 个应用程序从 java.awt.Desktop.isDesktopSupported() 获得不同的结果

maven - 严重: A child container failed during start java. util.concurrent.ExecutionException : org. apache.catalina.LifecycleException