問題タブ [maven-nar-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Maven NAR プラグイン: リンクされたライブラリ名が間違っています
初めて maven nar プラグインを使用して、C++ で corba IDL ファイルのバウンスをコンパイルします。exec プラグインと omniidl を使用してスタブとスケルトンを正常に生成し、src/ の下にすべての *.C および *.H ファイルを作成しました。
内部の Nexus リポジトリを使用して NAR の依存関係を取得しています。これまでのところ、すべての *.o ファイルをコンパイルできました。ただし、リンカーは次のメッセージで失敗します。
問題は、たとえばフォルダー
次の共有オブジェクトが含まれています。
リンカーは、完全なバージョン (依存関係のバージョン) を含むライブラリ名に対してリンクを試みます。
私の質問は次のとおりです。
- 共有オブジェクトを含む Nexus リポジトリで利用可能になった omniORB4 NAR 依存関係に、間違った .so 名が含まれていると推測できますか?
- リンカー セクションで、NAR プラグインに別のライブラリ名を使用してリンクするように指示することで、回避する方法はありますか?
NAR プラグインを構成する pom セクションは次のとおりです。
ありがとう。
java - maven プロジェクトの依存関係として jnetpcap を追加する方法は?
jnetpcap を使用するアプリを作成しました。マルチプラットフォームで、32 および 64 のプラットフォームで動作する必要があります。私は以前にmavenを使用したことがないので、jnetpcapのすべてのバージョンをプロジェクトに追加するにはどうすればよいですか?
nar https://github.com/sugree/jnetpcapを使用するソリューションを見つけましたが、適切な使用方法がわかりません。
プロジェクトの構造をコピーして、そこに jnetpcap をコンパイルする必要がありますか? これが依存関係ではなく nar の場合、プロジェクトに追加する方法を教えてください。Java クラスで jnetpcap を使用できますか?
PS また、ここから conf を使用して jnetpcap を依存関係として追加しようとしました: https://www.versioneye.com/clojure/jnetpcap:jnetpcap/1.4.r1425-1d
この行を pom.xml に追加しました。
エラーなしでコンパイルされますが、コマンド exec:java -Dexec.mainClass="org.sample.Main" でプロジェクトを実行しようとすると、エラー: "no jnetpcap in java.library.path" でクラッシュします。
maven - nar-maven-plugin でビジュアル スタジオのバージョンを指定する
複数のバージョンの Visual Studio がインストールされています。使用するビジュアル スタジオのバージョンを指定する方法はありますか? また、Visual Studio の複数のバージョンの NAR を生成したい場合、NAR プラグインでこれを処理できますか?
理想的には、最終製品は次のようになります。
または、少なくとも、NAR の作成に使用された Visual Studio のバージョンを特定する方法が必要です。これは nar-maven-plugin で可能ですか?
java - MinGW コンパイラと nar-maven-plugin でマシン依存の POM を回避する
を試すための単純な JNI ベースのプロジェクトがありnar-maven-plugin
ます。Windows 10 を実行しており、MinGW コンパイラを使用しています。この質問には関係ないと思いますが、ネイティブ コードを C ではなく C++ としてコンパイルしています。(「実際の」プロジェクトのネイティブ実装は C++ を使用するため、この最初のテストを超えてしまうと、これを変更するだけでは簡単ではありません。)
このビルドをmaven install
Eclipse IDE 経由で作成するには、POM ファイルでプラグインの一部としてリンカを明示的に指定する必要がありますconfiguration
。関連するセクションは次のとおりです。
これを行う場合、ローカル マシンは問題ありませんが、POM を特定のマシン/リンカーに特化したと考えています。完全に削除すると、次のエラーが発生します。
この部分を残して<name>g++</name>
オプションだけを削除すると、コンパイルは行われますが、実行時にネイティブ実装にリンクできないため、テストは失敗します。(これは--kill-at
フラグと既知の問題に関連しているため、それほど驚くことではありません。)
マシンに依存しない POM が機能するように、この問題を処理する既知の方法はありますか?
java - 「nar-maven-plugin」でコンパイルされていない JUnit テストのネイティブ コード
を使用してMavenで構成されたJNIプロジェクトがありますnar-maven-plugin
。Java と C++ コードの両方がプロジェクトに存在します。メイン コードは適切にコンパイルされるようです (C++ と Java の両方)。問題はテスト コード (JUnit) にあります。
テスト コードは、それ自体がネイティブ メソッドを持つ 1 つの Java クラスを定義しました。対応するネイティブ コードはディレクトリにあります。
ビルド メッセージから、このネイティブ テスト コードがコンパイルされたことを示す証拠はなくnm
、ビルド プロセスによって作成された DLL をコマンド ラインから実行すると、対応するネイティブ メソッドがまったく表示されません。さらに、テスト コードに意図的に構文エラーを挿入し、コンパイル時にエラーが発生するかどうかを確認するために再コンパイルしました。コードがコンパイルされていないという私の信念と一致して、エラーはありません。
UnsatisfiedLinkError
それに応じて、テストが の間に実行されたときに を取得しmvn install
ます。テストが失敗した時点から、メイン (非テスト) コードのネイティブ メソッドが正しく読み込まれ、リンクされていることがわかります。したがって、特にネイティブ テスト コードのビルドとリンクに関連する問題があると結論付けています。
私は現在、ネイティブ コード用の Eclipse IDE と MinGW コンパイラを使用して Windows 10 を使用しています。
私のPOMの関連セクションは以下のとおりです(初期設定の問題に関連するMinGWコンパイラとnar-maven-pluginを使用したマシン依存のPOMの回避に関する私の回答から少し更新されています):
この問題を処理する既知の方法はありますか? (おそらく追加の構成タグ?)