更改“java.library.path”后找不到 .dylib 文件
Can't find .dylib file after changing `java.library.path`
我创建了一个要使用 JNI 加载的 .dylib
文件,但我无法让 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 启动程序时使用,而不是直接打开可运行的 .jar
文件。
java.library.path
无法从程序内部更改。您可以设置 属性 但它的值仅在 VM 启动时使用,不会再次读取。您必须使用 -D
进行设置
另请参阅我的回答:
我创建了一个要使用 JNI 加载的 .dylib
文件,但我无法让 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 启动程序时使用,而不是直接打开可运行的 .jar
文件。
java.library.path
无法从程序内部更改。您可以设置 属性 但它的值仅在 VM 启动时使用,不会再次读取。您必须使用 -D
另请参阅我的回答: