本質的に、問題はこれです。私はJNIライブラリをロードするJavaプログラムを持っています。そのJNIライブラリをHotSpotのlibjvm.so
共有ライブラリにリンクすることができます。それに応じてHotSpot固有の関数、つまりjni.h
の外部の関数を呼び出すことはできますか?私が試してみて、簡単な方法で行うとJNIコードとJVMのリンク
、結果はとクラッシュするプログラムです:
java: symbol lookup error: /path/to/libtest.so: undefined symbol: _ZNK7oopDesc5klassEv
それがホットスポット固有を解決できないので、これはロードに失敗の外観を与えますoopDescクラス。このような方法でリンクできる図書館を作るための提案はありますか?
編集:また、コンパイル時にlibjava.so
にリンクしてみましたが、成功しませんでした。
ありがとう、私はこれをテストしましたが、それは問題ではありませんでした。まったく同じライブラリにリンクしていても依然として発生します。 – 0x277F
これは関連する可能性がありますか? https://bugs.openjdk.java.net/browse/JDK-8037962 – Wheezil