我在 Web 项目中使用 Matlab MCR,因此我将这些依赖项导入到 pom.xml
<!-- Matlab client tool library -->
<!-- <dependency>
<groupId>DataConcatenation</groupId>
<artifactId>DataConcatenation</artifactId>
<version>0.0.5-SNAPSHOT</version>
</dependency> -->
<!-- <dependency>
<groupId>DataConcatenator</groupId>
<artifactId>DataConcatenator</artifactId>
<version>0.0.5-SNAPSHOT</version>
</dependency> -->
<!-- <dependency>
<groupId>DataConversion</groupId>
<artifactId>DataConversion</artifactId>
<version>0.0.5-SNAPSHOT</version>
</dependency> -->
<dependency>
<groupId>DataConverter</groupId>
<artifactId>DataConverter</artifactId>
<version>0.0.5-SNAPSHOT</version>
<exclusions>
<exclusion>
<artifactId>DataConcatenation</artifactId>
<groupId>DataConcatenation</groupId>
</exclusion>
<exclusion>
<artifactId>DataConcatenator</artifactId>
<groupId>DataConcatenator</groupId>
</exclusion>
<exclusion>
<artifactId>DataConversion</artifactId>
<groupId>DataConversion</groupId>
</exclusion>
</exclusions>
</dependency>
第一个问题是,即使我只使用 DataConverter,我也必须排除其他树依赖项,但我只需要 dataConverter 并且该库没有其他依赖项。 第二个也是最重要的问题是这个错误:
Threw exception in ZipAndMat::createZipAndMat: java.lang.UnsatisfiedLinkError: Native Library /usr/v81/bin/glnxa64/libnativedl.so already loaded in another classloader
我阅读了很多指南,我知道我必须将此 jar 放入 $CATALINA_HOME/shared/lib 中,以便所有类加载器共享同一个 jar。 但是我怎样才能将这个依赖添加到上面的路径中呢?这是我第一次必须实现此配置。我在我的服务器上使用tomcat并通过war文件部署项目。 谢谢
最佳答案
您可以将 jar 放入 $CATALINA_HOME/shared/lib
,然后在您的 POM 中指定依赖项的 <scope>
如provided
:
<dependency>
<groupId>DataConverter</groupId>
<artifactId>DataConverter</artifactId>
<version>0.0.5-SNAPSHOT</version>
<scope>provided</scope>
<exclusions>
...
</exclusions>
</dependency>
此方法通常用于包含 JDBC drivers 的 jars在 Tomcat 上运行时; jdbc jar 放在 $CATALINA_HOME/shared/lib
中(因此所有 WAR 都可以找到它),但每个项目列表的 JDBC jar 作为 provided
的依赖项作为范围。
参见this post欲了解更多信息provided
.
关于java - 添加Maven依赖并设置为$CATALINA_HOME/shared/lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38636439/