繁体   English   中英

java.library.path 中没有 dhtreader

[英]No dhtreader in java.library.path

我尝试让这个 maven projekt在 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文件。

我确实使用以下命令编译了一个二进制 objekt:

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文件是一个常见的C类特异于树莓裨使用DHT11和DHT22传感器,它是在许多树莓裨项目中使用,并且具有很多像源这一个

这个 C 类 (dhtreader.c) 是通过使用的。 JNI/C 但由于上述错误,它不起作用。

我已经尝试在 java main 中使用以下方法设置java.library.path

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添加到java.library.path

我如何将dhtreader.so添加到java.library.path

我首先在Raspberry Pi StackExchange 中询问,但他们认为这是题外话。

尝试简单地将dhtreader.so重命名为libdhtreader.so

实际上,当我们在 java 中调用System.loadLibrary("foo") ,库的预期名称是:

  • 视窗: foo.dll
  • Unix/Linux: libfoo.so
  • Mac: libfoo.jnilib

尝试如下启动它:

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

注意:上面的命令假设您的 lib 位于 lib 目录中,该目录本身位于命令已启动的目录中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM