我尝试让这个专家projekt https://bitbucket.org/Temdegon/greenhouse在 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\sensor
有dhtreader.c
file.
我确实使用以下命令编译了二进制对象:
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
The dhtreader.so
放置在与.jar
.
dhtreader.c 文件是特定于 Raspberry Pi 使用 DHT11 和 DHT22 传感器的通用 C 类,它在许多 Raspberry Pi 项目中使用,并且有很多来源,例如this one https://code.ga-fl.net/cgz/jacuzzi/tree/913b3e809831b2e6a04f9e31c52bf03ea4176d38/var/jacuzzi/lib/Adafruit-Raspberry-Pi-Python-Code-master/Adafruit_DHT_Driver_Python.
这个C类(dhtreader.c)是通过使用的。 JNI/C 但由于上述错误而无法正常工作。
我已经尝试设置java.library.path
在java main中使用以下方法:
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.so
to the java.library.path
.
我如何添加dhtreader.so
to the java.library.path
?
我问在Raspberry Pi StackExchange https://raspberrypi.stackexchange.com/questions/48064/no-dhtreader-in-java-library-path首先,但他们认为这是题外话。