私は2つのmavenモジュールを持っています:
- native-wrapper - nar-maven-plugin によってビルドされたシステム lib の JNI ラッパーです。
- main-module - native-wrapper に依存し、テスト中にその JNI 呼び出しを使用します。
ネイティブ ラッパーでのテストは問題なく動作します。しかし、main-module でのテスト中に、「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>
生成された .nar を ./target/ で開きました - 「/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>
main-module の pom から nar-maven-plugin プラグインを削除すると、maven はネイティブ ラッパー モジュールからクラスを検出しません。
nar に lib を見つけさせるにはどうすればよいですか?