2017-10-18 11 views
1

JNIを使​​用してJava仮想マシンを作成し、そこにコードを実行するネイティブアプリケーションを作成しています。このアプリケーションは、他の人が使用するために配布されることを意図しているため、私だけでなく他のコンピュータでも動作する必要があります。これはすべてPC上で正常に動作しますが、Macではさまざまな問題があります。 XcodeののJavaフレームワークは、明らかに私ができるのJava 6OSX - Java JNIアプリケーションをコンパイルしてJREのみをインストールする

でのサポートを終了しているため -

私はビルトインのXcodeへのJavaフレームワークを使用する場合は、その後、私はJNIを使​​用することができますが、すべての私のコードは、Javaバージョン6にコンパイルされてJDKをインストールし、libjvm.dlib、libjli.dylib、およびlibjava.dylibファイルに巧みにリンクする場合は、それ以降のバージョンのJavaを使用してください。このシナリオではすべてがうまくいっていた。これはかなりクールだった。そこでJDKがインストールされていない別のMacでJREを実行しようとしましたが、動作しなかったことがわかりました。 jre/lib/server/libjvm.dylibはJDKに存在しますが、JREには存在しません。

私の質問は、JREがインストールされていて、JDKがインストールされていないMac OSX上で動作するJava 8またはJava 9 VMを作成する方法はありますか?

+0

'jl/lib/server/libjvm.dylib'を' dlopen'経由で読み込み、そのように関数を呼び出してみてください。私はあなたと同じ問題を抱えていて、解決策が見つからなかった。これまでのところ、私は動的にリンクし、自分のコンプにうまく動作します。私は 'getenv(" JAVA_HOME ")'を使ってJREを探します。 – Brandon

+0

「うまくいきませんでした!」私たちはもっと進む必要があります。どのように正確に失敗しましたか?私の最初の推測では、あなたは '@ executable_path'を正しく設定していないということですが、それはちょっとしたことです。 – Ssswift

+0

こんにちは、ブランドン、それはかなり良い解決策ですが、私の主な問題は、jre/lib/server/libjvm.dylibはJava Development KitではなくJava Runtime Envrionmentだけをインストールすると存在しないようです。これをJREだけで動作させる方法はありますか? – SynthDan

答えて

-1

うーん...私はあなたの尋ねることを理解しているとは完全には分かりませんが、私の問題が何であるかに基づいて答えるつもりです。 Javaプログラムを.jarファイルに正しくパッケージ化していることを確認しましたか?それが問題ではない場合は、通常、ライブラリやその他のパッケージをJavaでバンドルすることができます。あなたが言及したファイルがわからないので、それがあなたのためのオプションであるかどうかは正直には分かりませんが、それはあなたにとって可能な解決策になります。

私はそれ以上の情報を提供できません。うまくいけば、誰かがJavaのこの特定の部分にもっと精通していることを望みます。

関連する問題