我有两个 Maven 模块:
- native-wrapper - 是系统库的 JNI 包装器,由 nar-maven-plugin 构建。
- main-module - 依赖于 native-wrapper 并在测试期间使用它的 JNI 调用。
本机包装器中的测试工作正常。但是,在主模块中的测试期间,我得到“UnsatisfiedLinkError” - NarSystem 无法找到我的 JNI 库。
native-wrapper 的 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>
我在 ./target/ 中打开了生成的 .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:
...
<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>
如果我从主模块的 pom 中删除 nar-maven-plugin 插件,maven 不会从 native-wrapper 模块中找到任何类。
如何让 nar 找到库?