問題タブ [java-native-library]

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.

0 投票する
1 に答える
1297 参照

java - Eclipse でネイティブ ライブラリを外部パッケージにエクスポートできない。それはバグですか?

私はEclipseに報告しようとしていましたが、最初にここでチャンスを与えることを考えていました:

外部パッケージを追加すると、以下で指定されている場合を除いて、アプリケーションは参照されているネイティブ ライブラリを見つけることができません。

ワークスペースが 1 つのプロジェクトで構成されていて、プロジェクト フォルダー外のフォルダーから外部パッケージ 'EX_package.jar' をインポートする場合、次の方法でフォルダーをネイティブ ライブラリの場所に割り当てることができます。

パッケージの上にマウスを移動 -> 右クリック -> プロパティ -> ネイティブ ライブラリ -> フォルダーを入力します。

これは動作しません。実行時にアプリケーションはライブラリをロードせず、System.mapLibraryName(Path) も機能しません。

さらに、ユーザー ライブラリを作成し、それにパッケージを追加して、ネイティブ ライブラリのフォルダーを定義しても、まだ定義されていません。

それが機能する場合、私のコンピューターでは機能しないため、大きなバグがあります。Windows PATHパラメーターへのパスの追加など、考えられるあらゆる組み合わせでこれをテストします。何時間もこれで遊んで、同僚に助けてもらいましたが、二人とも空っぽになりました。

さらに、ワークスペース内の他のいくつかのプロジェクトに依存するメイン プロジェクトがあり、それらすべてが同じ 'EX_package.jar' を使用する必要がある場合、 I MUST supply a HARD COPY INTO EACH OF THEMのみになります(私はできる「唯一性を強調しないでください、私はこれにびっくりしました)メインプロジェクトが依存しているすべてのプロジェクトフォルダーにパッケージのハードコピーがあり、それぞれにネイティブパスを構成した場合にのみ機能します!!

これもうまくいきませんでした。

これに対する解決策があることを教えてください、これは私を狂わせます...

アップデート:

誰かが自分でこれを試してみたい場合は、JMF.jar を使用して、XP でネイティブ dll または jmf.properties ファイルを参照してみてください。私は dll ファイルを参照していますが、jmf は必要ありません。 .properties ファイル。

ありがとう、アダム・ゼハヴィ。

0 投票する
1 に答える
15505 参照

java - JMFを使用して、ただしJMFをインストールせずにビデオをキャプチャする方法

私が取り組んでいたビデオ会議プロジェクトでは、JMFを使用してビデオとオーディオをキャプチャし、それを別のエンドポイントに送信しました。問題は、私のチームが製品のユーザーにJMFをインストールさせたくないということでした。

この問題に対する私たちの解決策を共有することは価値があるかもしれないと思いました。できます。それはうまくいきます。あなたへの私の質問は:誰かがそれをするより良い方法を持っていますか?

環境:Windows、XP以降

  1. JMFforWindowsをダウンロードする
  2. マシンにインストールします

  3. dlljmfのインストール後、system32フォルダーで次のを見つけます。

    jmacm.dll
    jmam.dll
    jmcvid.dll
    jmdaud.dll
    jmdaudc.dll
    jmddraw.dll
    jmfjawt.dll
    jmg723.dll
    jmgdi.dll
    jmgsm.dll
    jmh261.dll
    jmh263enc.dll
    jmjpeg.dll
    jmmci.dll
    jmmpa.dll
    jmmpegv.dll
    jmutil dll
    jmvcm.dll
    jmvfw.dll
    jmvh263.dll
    jsound.dll

  4. dllを一時フォルダにコピーします

  5. ファイルを見つけjmf.propertiesます(コンピューターで検索してください)
  6. JMFソースコードをダウンロードする
    ソースコードで、次のファイルを見つけます。

JMFinit.java
JMRPropertiesGen.java
Registry.java
RegistryGen.java

  1. パッケージを作成します。私はそれを呼びますJMFNoInstall
  2. 手順6にリストされているファイルを追加します
  3. Mainというクラスをこのパッケージに追加します。

 

ファイルはjmf.properties、メソッドを含むクラスとmain同じフォルダー、またはメソッドを含むJARアーカイブと同じフォルダーに配置する必要がありますmain
はフォルダdllに入る必要があります。プログラムに、それらがフォルダ内win32にあるかどうかを確認させることができます。win32そうでない場合は、どこかからコピーしてもらうことができます。上記のクラスが実行jmf.propertiesされるたびに、ファイルが更新されます。Mainこれを実行する必要があるのは、プログラムを初めて実行するとき、またはユーザーが新しいキャプチャデバイスを追加する場合に1回だけです。最後に、jmf.jarファイルとjmfcom.jarこれは、WindowsJMFのダウンロードに付属しています。クラスパスに含まれています。この時点で行ってもいいです。実際にインストールしなくても、JMFのすべての機能。

これに関連する作業は実際にはそれほど多くなく、カスタムインストーラーに非常に簡単に組み込むことができます。

誰かがこれを行うためのより良い方法を見つけましたか?このようにすることにはいくつかの落とし穴があります。

編集:私が作成したコードのいくつかを共有することは価値があるかもしれないと思いました。もちろん、あなたはあなたが何を処理するためにそれを変更する必要があります。コンパイルされない可能性がありますが、欠落しているものは簡単に再作成できるはずです。しかし、それは人々を助けるための良い出発点かもしれないと思いました。detectCaptureDevices関数は、おそらくほとんどの人に役立つでしょう。このクラスを更新していきます。

DeviceFinder.java

0 投票する
1 に答える
296 参照

java - JARにネイティブライブラリを含むライブラリをバンドルするにはどうすればよいですか?

Netbeans 6.8でプロジェクトを作成し、いくつかのネイティブライブラリを含むサードパーティライブラリを追加しました。プロジェクトのJARを作成したとき、サードパーティのJARのみが含まれていました。そのnativelibraryはそうではありませんでした。そのため、プロジェクトを実行できません。

この問題を解決するにはどうすればよいですか?

0 投票する
2 に答える
11314 参照

java - ネイティブライブラリ、エラー:このJavaインスタンスは32ビットJVMをサポートしていません

こんにちはstackoverflowコミュニティ、

NetBeans IDE 7.2.1を使用しており、ネイティブライブラリを使用してプロジェクトをコンパイルして実行しようとしています。私のライブラリには32ビットのJVMが必要です。私はWindows764ビットを実行しています。プロジェクトをコンパイルして実行しようとすると、次のことが発生します。

私は構成に行き、次の引数を含めました(役に立たない):

64ビットJREと32ビットJREの両方がインストールされており、プラットフォームマネージャーで64ビットJDKと32ビットJDKの両方を使用できます。

これを解決するための提案はありますか?32ビットJREの前に64ビットJREをインストールすると、問題が発生する可能性があることを読みました。これはそれらの問題の1つですか?(私は確かに最初に64ビットをインストールしました)

0 投票する
1 に答える
67 参照

eclipse-plugin - Eclipse プラグインからプロジェクト フォルダーにある .so ファイルからメソッドを呼び出す

ネイティブ ライブラリにアクセスする必要がある Eclipse 用のプラグインを開発しました。

/usr/libプラグインがアクセスするために.so ファイルが存在することは必須ですか? そこに存在しない限り、プラグインはその中のメソッドにアクセスできません。プラグインを展開しても、構成を変更せずに動作するように、プラグイン自体が .so にアクセスできるようにする必要があります。以前は .so をロードしていましたが、 でSystem.loadLibrary()フル パスを使用してライブラリをロードした場合でもSystem.load()、.so ファイルを にコピーしない限り機能しませんでした/usr/lib

プラグインを独自のソース フォルダからアクセスさせるにはどうすればよいですか?

0 投票する
2 に答える
2938 参照

java - UnsatisfiedLinkError: ライブラリは読み込まれますが、まだリンク エラーが発生します

2 つの Eclipse プラグインがあります。

  • plugin-1: .jar のパッケージを他のプラグインに提供します。(C++ ライブラリの Java ラッパー) このプラグインは、[ファイル] -> [新規] -> [その他] -> [既存の JAR アーカイブからのプラグイン] をクリックして作成されました。

  • plugin-2: plugin-1 のネイティブ ライブラリ .so (Bundle-NativeCodeディレクティブは MANIFEST.MF にあります) を持ち、plugin-1 からクラスをインスタンス化します。

(実際に.soをplugin-1に入れてみましたが、.soを含むプラグインプロジェクトの外で、plugin-1 MANIFEST.MFのBundle-NativeCodeディレクティブを使用しても、ライブラリをロードできないようです。 plugin-1 を使用するすべてのプラグインに .so をバンドルする必要があると思います。)

plugin-2 からインスタンス化する plugin-2 から JUnit テストを実行しています。MyClassこれは、plugin-1 からインスタンス化MyLibraryClassします。MyClassネイティブ ライブラリを正常にロードし、ネイティブ ライブラリのロードまたはインスタンス化から例外がスローされることMyLibraryClassなくインスタンス化します。この場合、プラグインは実行していません。JUnit テストだけです。UnsatisfiedLinkErrorMyLibraryClass

(製品構成を使用して) plugin-2 を実行し、 instanceiate を実行するとMyClass、ネイティブ ライブラリは正常に読み込まれますが、UnsatisifiedLinkErrorwhen MyClassinstantiatesが発生しますMyLibraryClass。この場合、投稿で説明されているクラスを使用して取得した出力に基づいて、ライブラリがロードされていると思います。ロードされている JNI ライブラリのリストを取得するにはどうすればよいですか?

注: 私は Eclipse 3.6.1 を使用しています。

これは、私がやろうとしていることの本質を示すコード サンプルです。

0 投票する
1 に答える
127 参照

java - Web アプリのネイティブ ライブラリはどこに配置しますか (Caucho Resin 内)?

Resin がそれらをロードするために、Web アプリのネイティブ ライブラリはどこに行きますか?

0 投票する
1 に答える
53 参照

java - なぜNativeLibraryとNativeのエラーを表示する日食火星?

githubのvlcj playerを使って動画だけでなく音声も再生したいです。

これについては、YouTube のビデオ チュートリアルを参照しました。ビデオ チュートリアルでは、NativeLibrary と Native を使用する必要がありました。しかし、私のEclipse IDEは、以下のコードの両方の行でエラーを示しています:

0 投票する
2 に答える
442 参照

java - Aparapi、java.lang.UnsatisfiedLinkError: libaparapi_x86_... 依存ライブラリが見つかりません

4台のコンピューターでaparapi Javaプログラムを実行してみます。2台のコンピュータは完全に実行できますが、他の2台のコンピュータはスローしjava.lang.UnsatisfiedLinkErrorます:

`

`

0 投票する
1 に答える
37 参照

java - Java でのアセンブリ コードのインライン化と、Java で 32 ビット OS と 64 ビット OS を区別する方法

大学でのタスクのために、Java コードでアセンブリ インジェクションを記述する必要があります。ネイティブ関数を持つクラスがあります

次に、コマンド javac -h AsmOR.java を使用してクラスをコンパイルし、ヘッダーを取得しました。

このアセンブリ コードをアセンブリを使用しましたが、関数の r8 および r9 パラメータがなぜなのかわかりません。javadoc を読み込もうとしましたが、だめです。

また、ダブルサムにコプロセッサを使いたかったのですが、うまくいきません。

これを行う方法と、システムの 32 ビット バージョンと 64 ビット バージョンを区別し、バージョンに応じて dll ライブラリをロードする方法は?