将依赖添加到Maven并设置为$ CATALINA_HOME / shared / lib

时间:2016-07-28 12:30:36

标签: java matlab maven tomcat classloader

我在网络项目中使用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文件部署项目。 感谢

1 个答案:

答案 0 :(得分:0)

您可以将jar放入$ CATALINA_HOME / shared / lib,然后在您的pom中指定依赖关系<scope>为&#39;提供&#39;:

<dependency>
        <groupId>DataConverter</groupId>
        <artifactId>DataConverter</artifactId>
        <version>0.0.5-SNAPSHOT</version>
        <scope>provided</scope>
        <exclusions>
            ...
        </exclusions>
    </dependency> 

此方法通常用于在Tomcat上运行时包含JDBC驱动程序的jar; jdbc jar放在$ CATALINA_HOME / shared / lib中(所以所有的战争都可以找到它),但是每个项目列表都将jdbc jar作为依赖,provided作为范围。

有关provided

的详情,请参阅this post