代码之家  ›  专栏  ›  技术社区  ›  potato

在更改“java.库.PATH”后找不到.DyLB文件。

  •  0
  • potato  · 技术社区  · 6 年前

    我创造了一个 .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:.
    

    当我把我的 戴利布 在这些文件夹中的一个文件中,检测并加载了我的Java程序。 戴利布 文件没有问题,但当我试图更改时 java.library.path路径 要包括“我的桌面”文件夹的路径并将 戴利布 文件在我的桌面上,程序找不到。

    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)
    

    知道我做错什么了吗?有什么方法可以让程序找到 戴利布 文件放在我想要的任何文件夹中,或者最好放在自己的文件夹中 .jar 文件并成功加载?

    编辑: 一个答案提供了一个使用命令行的解决方案,但是我想通过双击可执行文件来启动应用程序。 罐子 归档,不用担心任何技术问题。

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   user2543253    6 年前

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

    另见我的答案: https://stackoverflow.com/a/51304696/2543253