Java未加载.dylib和.jnilib

时间:2019-01-20 16:57:43

标签: java macos native dylib

因此,我正在尝试基本加载。

System.out.println(System.getProperty("java.library.path"));
System.load("/Users/Aaroneiros/Desktop/morfeusz2plugin/libmorfeusz2.dylib");
System.load("/Users/Aaroneiros/Desktop/morfeusz2plugin/libjmorfeusz.jnilib");

如果第二个加载被注释掉,那么它将成功。但是,如果未将其注释掉,则会得到UnsatisfiedLinkError异常,表明未加载libmorfeusz2.dylib

我还尝试了将System.loadLibrary与库名“ libmorfeusz2”和“ libmorfeusz2.dylib”一起使用。

我的java.library.path是非常标准的/Users/.../Library/Java/Extendsions:/ Network / Library / Java / Extensions:/ usr / lib / java等。 我将libmorfeusz2.dyliblibjmorfeusz.jnilib分别放入了.../Library/Java/Extension/usr/lib/java/中。它们也与我正在运行的脚本位于同一目录中。因此,据我了解,这应该起作用。有什么想法我做错了吗?还是有什么问题呢?

编辑。 如果我将它们手动添加到IntelliJ idea的项目中,它确实可以工作,但是长话短说,我正在制作Elasticsearch插件,但是我不能真正手动添加它们。

编辑2。 使用@Siguza建议的工具:

otool -l /Users/Aaroneiros/Desktop/morfeusz2plugin/libmorfeusz2.dylib | fgrep -A5 LC_ID_DYLIB
          cmd LC_ID_DYLIB
      cmdsize 64
         name @executable_path/libmorfeusz2.dylib (offset 24)
   time stamp 1 Thu Jan  1 01:00:01 1970
      current version 0.0.0
compatibility version 0.0.0

otool -l /Users/Aaroneiros/Desktop/morfeusz2plugin/libjmorfeusz.jnilib | fgrep -A5 LC_LOAD_DYLIB
          cmd LC_LOAD_DYLIB
      cmdsize 48
         name libmorfeusz2.dylib (offset 24)
   time stamp 2 Thu Jan  1 01:00:02 1970
      current version 0.0.0
compatibility version 0.0.0
--
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name /usr/lib/libstdc++.6.dylib (offset 24)
   time stamp 2 Thu Jan  1 01:00:02 1970
      current version 7.5.0
compatibility version 7.0.0
--
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name /usr/lib/libgcc_s.1.dylib (offset 24)
   time stamp 2 Thu Jan  1 01:00:02 1970
      current version 1.0.0
compatibility version 1.0.0
--
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name /usr/lib/libSystem.B.dylib (offset 24)
   time stamp 2 Thu Jan  1 01:00:02 1970
      current version 111.1.4
compatibility version 1.0.0

0 个答案:

没有答案