2

我想访问设备,所以我Java在 eclipse 中使用JNI库开发了一个代码,该库调用 c 代码与设备通信。

为了访问设备,我们需要sudo在 Eclipse 中进行身份验证,所以我使用以下链接完成了身份验证

如何从 Eclipse 以超级用户身份运行我的应用程序?

但是现在我面临在 Java 代码中加载 JNI 库的问题

我收到错误

WARNING: Running as root!
Loading...
Did not load library
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1675)
    at java.lang.Runtime.loadLibrary0(Runtime.java:840)
    at java.lang.System.loadLibrary(System.java:1047)
    at org.sc.ivb.jni.DeviceCommunicationController.<clinit>(DeviceCommunicationController.java:10)
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.sc.ivb.jni.DeviceCommunicationController.Ivb_InitDevice()V
    at org.sc.ivb.jni.DeviceCommunicationController.Ivb_InitDevice(Native Method)
    at org.sc.ivb.jni.DeviceCommunicationController.main(DeviceCommunicationController.java:27)
4

1 回答 1

4

不要sudo用于此任务!相反,应授予设备适当的权限,以便用户可以访问它。这可以通过使用chmod/chown更改设备文件的权限,或使用adduser <username> <group>将当前用户添加到该设备组来实现。

于 2013-08-07T15:55:38.617 回答