Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven nar插件和相关模块中的测试_Java_Maven_Maven Nar Plugin - Fatal编程技术网

Java maven nar插件和相关模块中的测试

Java maven nar插件和相关模块中的测试,java,maven,maven-nar-plugin,Java,Maven,Maven Nar Plugin,我有两个maven模块: native wrapper是一个基于系统库的JNI包装器,由nar maven插件构建 主模块-依赖于本机包装器,并在测试期间使用它的JNI调用 本机包装器中的测试工作正常。但是,在主模块中的测试期间,我得到了“UnsatifiedLinkError”-NarSystem无法找到我的JNI库。 本机包装器的pom包括: ... <packaging>nar</packaging> ... <plugin> <group

我有两个maven模块:

  • native wrapper是一个基于系统库的JNI包装器,由nar maven插件构建
  • 主模块-依赖于本机包装器,并在测试期间使用它的JNI调用
  • 本机包装器中的测试工作正常。但是,在主模块中的测试期间,我得到了“UnsatifiedLinkError”-NarSystem无法找到我的JNI库。

    本机包装器的pom包括:

    ...
    <packaging>nar</packaging>
    ...
    <plugin>
        <groupId>com.github.maven-nar</groupId>
        <artifactId>nar-maven-plugin</artifactId>
        <version>3.0.0-rc-2</version>
        <extensions>true</extensions>
        <configuration>
            <libraries>
                <library>
                    <type>jni</type>
                    <narSystemPackage>some.native.wrapper</narSystemPackage>
                </library>
            </libraries>
        </configuration>
    </plugin>
    
    ...
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>native-wrapper</artifactId>
        <version>${project.version}</version>
        <type>nar</type>
    </dependency>
    ...
    <plugin>
        <groupId>com.github.maven-nar</groupId>
        <artifactId>nar-maven-plugin</artifactId>
        <version>3.0.0-rc-2</version>
        <extensions>true</extensions>
    </plugin>
    
    。。。
    纳尔
    ...
    com.github.maven-nar
    nar maven插件
    3.0.0-rc-2
    真的
    jni
    一些本地包装
    
    我在./target/-中打开了generated.nar,它确实包含“/lib/amd64 Linux gpp/jni/libnative-wrapper-0.1.0-SNAPSHOT.so”。另一个nar(带有java类)包含“/META-INF/nar/some.native.wrapper/native wrapper/nar.properties”

    主模块的pom:

    ...
    <packaging>nar</packaging>
    ...
    <plugin>
        <groupId>com.github.maven-nar</groupId>
        <artifactId>nar-maven-plugin</artifactId>
        <version>3.0.0-rc-2</version>
        <extensions>true</extensions>
        <configuration>
            <libraries>
                <library>
                    <type>jni</type>
                    <narSystemPackage>some.native.wrapper</narSystemPackage>
                </library>
            </libraries>
        </configuration>
    </plugin>
    
    ...
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>native-wrapper</artifactId>
        <version>${project.version}</version>
        <type>nar</type>
    </dependency>
    ...
    <plugin>
        <groupId>com.github.maven-nar</groupId>
        <artifactId>nar-maven-plugin</artifactId>
        <version>3.0.0-rc-2</version>
        <extensions>true</extensions>
    </plugin>
    
    。。。
    ${project.groupId}
    本机包装器
    ${project.version}
    纳尔
    ...
    com.github.maven-nar
    nar maven插件
    3.0.0-rc-2
    真的
    
    若我从主模块的pom中删除nar maven插件,maven在本机包装器模块中找不到任何类


    如何让nar找到库?

    看起来,不能只使用
    nar
    添加工件并运行测试。您应该自己为java设置适当的库路径。我是这样做的(除了主模块的pom):

    nar
    ...
    ${project.build.directory}/nar/native wrapper-${project.version}-amd64 Linux-gpp-jni/lib/amd64 Linux-gpp/jni/:${project.build.directory}
    ...
    maven surefire插件
    一旦
    ${LIBRARY\u PATH}
    ${LIBRARY\u PATH}
    java.library.tmpdir
    ${LIBRARY\u PATH}
    java.library.path
    ${LIBRARY\u PATH}
    ...