在linux中的eclipse中进行sudo身份验证后加载JNI库时出错

时间:2013-06-04 05:54:24

标签: linux eclipse java-native-interface

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

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

How do I run my application as superuser from 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)

1 个答案:

答案 0 :(得分:4)

请勿使用sudo执行此任务!而是为设备提供适当的权限,以便用户可以访问它。这可以通过使用chmod / chown更改设备文件的权限,或使用adduser <username> <group>将当前用户添加到该设备组来实现。