私はEclipseを使用し、nar-maven
プラグインを使用して開発マシンでJNIプロジェクトを構築しました。これは複数のアーキテクチャでコンパイルされ、.nar
ファイルが残っています。コマンドラインからnarファイルを実行するには?
私の問題は、nar
のJavaクラスの1つでメインプログラムを実行したいということです。 Javaプログラムがnar
ファイル内にあるネイティブライブラリをロードしようとすると、私はUnsatisfiedLinkError
を取得し続けます。今私は、java.library.path
にある.so
ファイルが必要であることに気づいていますが、唯一のコピーは何とかnar
ファイル内にあるので、私はそのポイントをどこで作成するのか分かりません。私は、自動生成されたNarSystem.loadLibrary
メソッドをJavaで使用しているため、これはバックグラウンドで処理されるという印象を受けました。
詳細はこちら
nar
プラグインの設定私のPOMの一部:
static {
com.myco.package.NarSystem.loadLibrary();
}
:私のJavaクラスの一つで
<plugin>
<groupId>com.github.maven-nar</groupId>
<artifactId>nar-maven-plugin</artifactId>
<version>3.5.1</version>
<extensions>true</extensions>
<configuration>
<libraries>
<library>
<type>jni</type>
<narSystemPackage>com.myco.package</narSystemPackage>
</library>
</libraries>
</configuration>
</plugin>
を、私は、ライブラリをロードするための自動生成されたメソッドを呼び出す静的初期化子を持っています
mvn install
を実行した後、私のローカル.m2/repository
ディレクトリの適切なサブディレクトリに次のファイルがあります。
maven-metadata-local.xml
_maven.repositories
project-0.0.1-arm-Linux-gpp-jni.nar
project-0.0.1.nar
project-0.0.1.pom
project-0.0.1-javadoc.jar
私は、このコマンドを使用して、コマンドラインから実行してみてください:
java -cp /home/myname/.m2/repository/com/myco/project/0.0.1/project-0.0.1.nar com.myco.package.MainClass
これは、適切なメインプログラムの実行を開始するので、Java部分が見つかりました。静的ブロックの上 - - それはそれはネイティブライブラリをロードする必要がポイントになると、それはエラーがスローされます
Exception in thread "main" java.lang.UnsatisfiedLinkError: no project-0.0.1 in java.library.path
この質問、Nar dependency in multi-module maven project、それは近いだろうように見えたが、答えはすでに持っ依存何らかの形で「公開」されたネイティブライブラリ私はmvn nar:nar-unpack
とmvn exec:java
を試している質問者に従ったが、それは私を前進させなかった。考える(。その質問で説明したように最初に、私は第二のために、ここで説明したのと同じ例外から同じ明らかにヌルの結果を取得します)
その他の質問:
- Maven - UnsatisfiedLinkError with java.library.pathライブラリを見つけることについているように見えますMavenプロセスの外側にあります。私が配備されると助けにならないmaven設定ファイルの点で答えを出します。
- maven-nar-plugin and tests in dependent moduleこれは、テストの実行に固有の問題を扱います。
- nar-maven-plugin and native-library-loader dont load native libこれは近いですが、いずれにしても答えがありません。それは、ポスターが何とかコマンドラインにライブラリパスを指定しようとしていたために違っているようです。
- Using a native Maven artifact (nar) in a webappこれはwebappに組み込まれているため、別のものです。この手がかりを提供しているようです。「これらはどちらもNAR成果物として生成され、使用するにはmaven-narプラグインが必要です。」しかし、私はどのようにプラグインを使用する必要があるのか分かっていない!
どうすればこのメインプログラムをコマンドラインから実行できますか?ネイティブライブラリを「抽出」する前処理ステップがある場合、それは何ですか?それが自動であれば、何が欠けていますか?ありがとう!