Can';更改'java.library.path'后找不到.dylib文件`

Can';更改'java.library.path'后找不到.dylib文件`,java,java-native-interface,Java,Java Native Interface,我创建了一个.dylib文件,我想使用JNI加载它,但我无法让Java程序找到它 我通过编程检查了java.library.path的值,结果是: /Users/potato/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. 当我将.dylib文件放在其中一个文件夹中时,我的Java程序

我创建了一个
.dylib
文件,我想使用JNI加载它,但我无法让Java程序找到它

我通过编程检查了
java.library.path的值,结果是:

/Users/potato/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
当我将
.dylib
文件放在其中一个文件夹中时,我的Java程序检测到并加载了
.dylib
文件,没有问题,但当我尝试更改
Java.library.path
以包含桌面文件夹的路径并将
.dylib
文件放在桌面上时,程序找不到它

System.setProperty("java.library.path", "/Users/potato/Desktop:" + System.getProperty("java.library.path"));
System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("winfnc");

output:
/Users/potato/Desktop:/Users/potato/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no winfnc in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
知道我做错了什么吗?有什么方法可以让程序在我想要的任何文件夹中找到
.dylib
文件,或者更好的方法是在它自己的
.jar
文件中找到并成功加载它

编辑:一个答案提供了一个使用命令行的解决方案,但我希望能够通过双击可执行文件
.jar
启动应用程序,而不必担心任何技术问题


Eclipse中有一个添加VM参数的选项,但它们仅在从Eclipse启动程序时使用,而不是直接打开runnable
.jar
文件。

java.library.path
无法从程序内部更改。您可以设置属性,但它的值仅在VM启动时使用,并且不会再次读取。您必须将其设置为
-D


另请参见我的回答:

谢谢,console命令起作用了。但是,我想把程序发送给其他人(非程序员),这样他们就可以轻松地使用它,而不需要
.jar
可执行文件以外的任何东西。有没有办法实现这一点?据我所知,使用现有代码(即使用
loadLibrary
)无法实现这一点。您必须添加一个自定义启动程序或启动脚本。但是,如果您更改代码以使用您想要的任何逻辑查找库,然后使用库的完整路径而不是
loadLibrary
,您就不需要
java.library.path
我已经在考虑使用
Runtime.exec()重新启动应用程序
程序一打开,VM参数就被打开了,因为他太忙于思考聪明的解决方案,错过了最简单的事情lol