我正在尝试安装一个名为 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/
也没有用。
我哪里做错了?
最佳答案
要在 java 中加载 native 库,您可以使用以下方法之一:
使用 System.load
您可以使用 System.load(String filename)
function要直接从文件系统加载库,您必须指定 native 库的绝对路径名。例如 System.load("/System/libraries/libSomeNative.dylib")
。
使用 System.loadLibrary
您也可以使用 System.loadLibrary(String libName)
function加载 native 库。此方法依赖于系统并要求
您使用本地库所在的路径指定 java.library.path
。在您的情况下,您可以使用 -Djava.library.path=/path/toNativeLib/
作为 java 参数。
或者,由于您正在尝试使用 Eclipse,您还可以按以下方式指定此路径:右键单击项目 > 属性。然后选择 Java Build path 并单击 Source 选项卡,如果展开源文件夹,您可以在此处设置 Native library location 指定您的 native 库的路径:
由于此调用依赖于系统,请注意 System.loadLibrary(String libName)
的 libName
参数不是直接的本地库名称。在 MAC OS X 中(它在其他操作系统上的工作方式不同)它使用 lib
前缀和 .dylib
后缀 libName
,因此要指定 libSomeNative.dylib
,您必须使用 SomeNative
作为 libName
。
总结一下,例如要加载 /System/libraries/libSomeNative.dylib
您必须指定 java.library.path=/System/libraries/
如上所述并调用 System.loadLibrary("SomeNative")
。
关于java - 如何使用dylib文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16506297/