我的场景如下:
我有一个部署到 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 中)?
最佳答案
由于您使用的是 Tomcat,您可以利用 VirtualWebappLoader .
添加一个META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/somepath/myapp">
<Loader className="org.apache.catalina.loader.VirtualWebappLoader"
virtualClasspath="/somedir/*.jar"/>
</Context>
另请记住,virtualClasspath 属性必须是绝对路径,如以下评论中正确指出的那样。
关于java - 在 Java Web 应用程序中加载外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13704915/