2

この Maven プロジェクトを Raspberry Pi 3 で実行しようとしましたが、 DHT11センサーで次のエラーが表示されます。

sudo java -classpath '.:classes:*:classes:/opt/pi4j/lib/*' com.epam.llpd.greenhouse.web.ServerStarter

java.lang.UnsatisfiedLinkError: no dhtreader in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at com.epam.llpd.greenhouse.sensor.Sensor.<clinit>(Sensor.java:16)
    at com.epam.llpd.greenhouse.PiHardwareController$1.run(PiHardwareController.java:132)

フォルダ\src\main\java\com\epam\llpd\greenhouse\sensordhtreader.cファイルがあります。

次のコマンドでバイナリ オブジェクトをコンパイルしました。

gcc -o dhtreader.so -lc -shared -I/usr/lib/jvm/jdk-7-oracle-arm-vfp-hflt/include -I/usr/lib/jvm/jdk-7-oracle-arm-vfp-hflt/include/linux dhtreader.c -l bcm2835

dhtreader.soと同じフォルダに配置されます.jar

dhtreader.c ファイルは、Raspberry Pi が DHT11 および DHT22 センサーを使用するための一般的な C クラス固有であり、多くの Raspberry Pi プロジェクトで使用されており、このようなソースがたくさんあります。

この C クラス (dhtreader.c) は経由で使用されます。JNI/C ですが、上記のエラーのために機能しません。

java.library.path私はすでにJavaメインで次のメソッドを設定しようとしました:

System.setProperty("java.library.path", "./");

それは役に立ちませんでした。代わり-Djava.library.path=./に、Javaコマンドに追加しました:

sudo java -classpath '.:classes:*:classes:/opt/pi4j/lib/*' com.epam.llpd.greenhouse.web.ServerStarter -Djava.library.path=./

しかし、それも役に立ちませんでした。

今、私は立ち往生していて、 を に追加する方法がわかりませdhtreader.sojava.library.path

dhtreader.soに を追加するにはどうすればよいjava.library.pathですか?

私は最初にRaspberry Pi StackExchangeで尋ねましたが、彼らはそれは話題から外れていると考えました。

4

1 に答える 1