問題タブ [java-native-interface]
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.
java - 複数の依存するネイティブ ライブラリを Java Webstart にするにはどうすればよいですか?
例: 2 つの共有オブジェクトがあります (.dll にも同じことが当てはまります)。最初の共有オブジェクトはサードパーティ ライブラリからのもので、libA.so と呼びます。この一部を JNI でラップし、独自のライブラリ libB.so を作成しました。現在、libB は libA に依存しています。
Webstarting の場合、両方のライブラリが webstart 作業領域に配置されます。私の Java コードは libB をロードしようとします。この時点で、システム ローダーは、システム ライブラリ パスにない libA をロードしようとします (java.library.path は役に立ちません)。最終的な結果として、libB には満たされていないリンクがあり、使用できません。
libB の前に libA をロードしようとしましたが、それでもうまくいきません。OSが私のためにそのロードをしたいようです。静的にコンパイルする以外に、これを機能させる方法はありますか?
java - JNI と Java: ant 呼び出し make または make 呼び出し ant?
プラットフォーム固有の C/C++ コードから Java へのファイル システム変更通知を提供するために、JNI (Java Native Interface) の世界に初めて足を踏み入れようとしています。それは、私が見逃したこれを行うための素晴らしいライブラリを誰かが提案しない限りです。
JNI を初めて使用したので、インターフェイス側とライブラリ生成側に関する多くのドキュメントを見つけることができましたが、ネイティブ ライブラリの構築に関するドキュメントはあまり見つかりませんでした。
既存の Java ソースの ant に基づく既存のビルドがあるので、ライブラリを作成するために ant に make を呼び出させるべきか、または作成後に make に ant を呼び出させるのが最善かを解決しようとしています。図書館?
どちらのオプションも非常に優れているとは言えませんが、コードをコンパイルしてライブラリを直接生成するために ant にコンパイラを呼び出させるよりは優れているように思えます。
c# - JavaからC#コードを呼び出しますか?
誰かがC#コードをJavaアプリケーションに統合するための良い解決策を持っていますか?
コードが小さいので、Javaで書き直すこともできますが、可能であればコードを再利用したいと思います。繰り返さないでください。
また、C#をWebサービスなどとして公開できることはわかっていますが、セキュリティ/暗号化機能が含まれているため、可能であれば緊密に統合しておくことをお勧めします。
編集:サーバーベースのアプリで実行されるため、別のランタイムを「ダウンロード」することは関係ありません。
java - JNIを介したより高速なMath.exp()?
私はJavaから非常に頻繁に計算する必要がありますが、ネイティブバージョンをJavaMath.exp()
よりも高速に実行することは可能ですか?Math.exp()
jni + Cだけを試しましたが、単純なjavaよりも低速です。
java - jstring を wchar_t に変換する方法 *
C++ 側で、私の関数がjstring
という名前の型の変数を取るとしましょうmyString
。次のように ANSI 文字列に変換できます。
入手方法はありますか
const wchar_t* unicodeString =
...
java - JavaでWindowsEventLogを読み取る方法
JNIを使用せずにWindowsEventLogを読み取る方法についての指針はありますか?または、 JNIを使用する必要がある場合、そのための優れたオープンソースライブラリはありますか?
java - JAVA、JNI、および C アプリケーションでのメモリ フットプリントの問題
C で記述されたアプリケーションの一部があり、JVM を生成し、JNI を使用して Java アプリケーションと対話します。Process Explorer によるメモリ フットプリントが最大 1GB になり、メモリが不足します。私が知る限り、最大2GBまで取得できるはずです。私が信じていることの 1 つは、JVM が使用しているメモリが Process Explorer に表示されないことです。私の xmx は 256 に設定されています。Java 側のメモリを監視するステートメントをいくつか追加しました。これは 256 でピークに達し、GC はその仕事を行っており、その側ではすべて問題ありません。私の質問は、残りの 700 MB 以上はどこで消費されているのでしょうか? Java/JNI/C メモリの専門家はいますか?
java - Javaから任意のアプリケーションへのキーボードイベントの送信(画面キーボード上)
私はJavaを使用したオンスクリーンキーボードの開発に取り組んでいます。このキーボードには、JComponent
すべての可能なキーがあります。ボタン上でマウスダウンが検出されたら、現在フォーカスしているアプリケーションに特定のキーボードコードを送信したいと思います。キーボード自体はJFrame
装飾なしで内部にあり、常にオンに設定されています。
Robotクラスを使用して、ネイティブキューでこれらのキーボードイベントをシミュレートできることがわかりました。ただし、この場合、を選択するJComponent
と、でキー押下が受信さJFrame
れ、他のアプリケーションでは受信できなくなります。
画面キーボードを「常にフォーカスなし」に保つにはどうすればよいですか?キープレスを送信するために別のアプローチを使用することはおそらく可能ですか?
java - UnsatisfiedLinkError:指定されたプロシージャが見つかりませんでした
WindowsXPのアプレットから呼び出されるC++でいくつかのJNIコードを書いています。アプレットを正常に実行し、JNIライブラリをロードして呼び出すことができました。さらに、他のDLLの関数を呼び出すこともできました。すべてのDLLが含まれるディレクトリを含めるようにPATHシステム環境変数を設定することで、これを機能させることができました。
したがって、問題は、新しい外部DLLを使用する別の呼び出しを追加すると、ライブラリをロードするときに突然UnsatisfiedLinkErrorがスローされることです。メッセージは次のとおりです。'指定されたプロシージャが見つかりませんでした'。依存DLLを削除して、依存DLLが見つからないという別のメッセージを受け取ることができるため、これは依存DLLがない場合の問題ではないようです。私がオンラインで見つけたものから、このメッセージはネイティブJava関数の実装がDLLにないことを意味しているように見えますが、この余分なコードがなくても正常に動作するのは奇妙です。
誰かがこれを引き起こしている可能性があることを知っていますか?UnsatisifedLinkErrorに対して「指定されたプロシージャが見つかりませんでした」というメッセージを表示できるのはどのようなものですか?