我正在尝试安装一个名为V-Rep的机器人模拟软件来远程模拟机器人,我需要有remoteApi.java
和remoteApiJava.dylib
个文件。我似乎无法弄清楚如何使用dylib文件。
我在构建项目时遇到的错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no remoteApiJava in java.library.path
我尝试直接在终端中运行dylib文件,但没有用。
我将它放在/projectPath/lib/
中,并将其添加为eclipse中的构建路径,无法正常工作
我也尝试在运行配置中设置环境变量,DYLD_LIBRARY_PATH = /projectPath/lib/
也不起作用。
那里我做错了什么?
答案 0 :(得分:5)
要在java中加载本机库,您可以使用以下方法之一:
您可以使用System.load(String filename)
function直接从文件系统加载库,您必须指定本机库的绝对路径名。例如System.load("/System/libraries/libSomeNative.dylib")
。
您也可以使用System.loadLibrary(String libName)
function加载本机库。此方法取决于系统并且需要
使用本机库所在的路径指定java.library.path
。在您的情况下,您可以使用-Djava.library.path=/path/toNativeLib/
作为java参数。
或者,既然您正在尝试使用 Eclipse ,您也可以按照以下方式指定此路径:右键单击项目>特性。然后选择 Java Build path并单击Source选项卡,此处如果展开源文件夹,则可以设置 Native library location ,指定本机库的路径:
由于此调用取决于系统,因此libName
的{{1}}参数不是直接的本机库名称。在 MAC OS X (它在其他操作系统上的工作方式不同)中,它使用System.loadLibrary(String libName)
前缀和lib
上的.dylib
后缀,因此要指定{{1您已将libName
用作libSomeNative.dylib
。
总结一下,例如加载SomeNative
您已指定libName
,如上所述,并拨打/System/libraries/libSomeNative.dylib
。