java - 添加Maven依赖并设置为$CATALINA_HOME/shared/lib

标签 java matlab maven tomcat classloader

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

相关文章:

matlab - Matlab绘图完成后如何修改不同图层的可见性?

java - 将符号转换为字符串中的不同符号

java - 写入 .jar 之外的文件

matlab - 具有 2 个变量的函数曲线下的阴影面积

c++ - 从 C++ DLL 到 Matlab 的解析时间

maven:发生了非法的反射访问操作

java - bintray api如何授权

maven - 如何使用 Maven/Gradle 获得有关 3rd 方库更新的通知?

java - Sharepoint Online REST API 连接

java - 使用 Jsoup 自动解析 CDATA 内标签的方法,无需替换