因此,我正在尝试基本加载。
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.dylib
和libjmorfeusz.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