私はUbuntuを初めて使用し、2日間オンラインで検索し、多くのソリューションを試しましたが、まだ運がありません. 誰かがこれを手伝ってくれるなら、私は感謝します。
WindowsでEclipseを使用してJavaでプログラムを作成しました。私のプログラムは、C 版 hidapi ライブラリ (.dll) の Java ラッパーである Java hidapi ライブラリを使用しています。Eclipse では、Java hidapi をビルド パスに追加し、C hidapi をネイティブ ライブラリとして設定すると、すべてが正常に機能します。
今、Ubuntuでも同じことをしたいと思っています。同じ Java hidapi が使用され、Linux 用の C バージョンの hidapi ライブラリ (.so ファイル) が使用されます。Linux 用の C バージョンの hidapi ライブラリを作成するとき、libusb-1.0 という別のライブラリが必要であることがわかりました (hidapi は低レベルの通信を処理するために必要です)。libusb-1.0 をインストールし (/usr/lib/i386-linux-gnu の下に libusb-1.0.so ファイルがあります)、Linux 用の C バージョンの hidapi ライブラリを作成します。私は小さなCプログラムを持っていて、それをbashでテストしました。動作するので、この時点まで、Linux用のlibsub-1.0.soとCバージョンのhidapiライブラリの両方libhidapi-jni.soが正しくインストール/生成され、実行時にシステムが共有 libusb-1.0.so ライブラリを見つけることができる小さな C プログラムは、libsub-1.0 がどこにあるかを明示的に言及しなくても (libusb-1.0.
だから私は日食に行きます。Eclipse ワークスペースをインポートし、ビルド パスに Java hidapi を追加し (Windows で行ったように)、Linux 用の C バージョンの hidapi ライブラリ (.so ファイル) を「lib」というフォルダー (.dll バージョンのネイティブ ライブラリも存在します)。そして、「ビルドパス」->「ビルドパスの設定」->「ライブラリ」タブ->「ネイティブライブラリの場所」で、ネイティブライブラリを「lib」に設定しました。したがって、この時点までの 2 つのネイティブ ライブラリは、/usr/lib/i386-linux-gnu の下の libusb-1.0 と、'whereever eclipse workspace is'/lib の下の hidapi.so です。最後に、ソース コードに次の 2 行を追加します。
System.loadLibrary("usb-1.0"); // この行を A と呼びます。
System.loadLibrary("hidapi-jni"); // この行を B と呼びます。
プログラムを Java アプリケーションとして実行します。行 A で「java.lang.UnsatisfiedLinkError: no usb-1.0 in java.library.path」が報告されます。そのため、Java ランタイムは libsub-1.0 の場所を見つけることができないと思います。
明確にするために、私はすでに次の試行を行いましたが、どれも機能しませんでした.
- 2 つのライブラリはそのままにして、vm 引数を追加します (実行 -> 実行構成 -> 引数 -> VM 引数): -Djava.library.path="${workspace_loc:project_name}/lib; /usr/lib/i386- linux-gnu". 行 A に「java.lang.UnsatisfiedLinkError: no usb-1.0 in java.library.path」が表示されます。
- 元に戻す 1. libsub-1.0.so を 'wherever eclipse workspace is'/lib に移動して、2 つの .so ファイルを一緒にします。.jar のネイティブ ライブラリの場所をこのフォルダーに設定します。B行で「java.lang.UnsatisfiedLinkError: blablabla: undefined symbol: libusb_control_transfer」が表示されます。したがって、libusbライブラリが見つかったと思いますが、シンボル(libusbにあるはず)はまだ解決されていません。これは本当に奇妙です。
誰でも私を助けることができますか?前もって感謝します。