【问题标题】:Load external library in java web application在 Java Web 应用程序中加载外部库
【发布时间】:2012-12-04 14:16:01
【问题描述】:

我的情况如下:

我有一个部署到 servlet 容器的 WebApp.war。此 WebApp.war 在 WEB-INF/lib 中包含以下库:

  • lib_a.jar
  • lib_b.jar

我还有另一个库,比如 lib_vendor.jar,由于许可问题,我无法在 WebApp/WEB-INF/lib 中部署它,所以我让我们的客户在应用程序安装后将此库复制到 tomcat/lib 中。但是由于 lib_vendor.jar 需要在 Web 应用程序类加载器中加载的 lib_a.jar 和 lib_b.jar,所以我不能使用 lib_vendor.jar。

如何在 Web 应用程序的同一个类加载器中加载外部库(不在 WEB-INF/lib 中)?

【问题讨论】:

  • “因为许可问题”尝试解决许可问题...
  • 不确定,但您可以在类路径中添加库。不需要添加到lib目录中。
  • NimChimpsky,无法解决许可问题

标签: java tomcat servlets classloader


【解决方案1】:

由于您使用的是 Tomcat,因此您可以利用 VirtualWebappLoader

添加META-INF/context.xml whith

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/somepath/myapp">
    <Loader className="org.apache.catalina.loader.VirtualWebappLoader"
              virtualClasspath="/somedir/*.jar"/>
</Context>

还请记住,virtualClasspath 属性必须是绝对路径,正如下面的评论中正确说明的那样。

【讨论】:

  • 只是为了确认这是一个真正正确的答案,如told here,它必须是一个绝对目录。这样的相对是行不通的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多