我有一个像这样的JNA库存根:
public interface FREngine extends Library {
NativeLibrary JNA_NATIVE_LIB = NativeLibrary.getInstance("FREngine");
FREngine INSTANCE = (FREngine) Native.loadLibrary("FREngine", FREngine.class);
}
如果我尝试以任何方式使用此库,我会收到一个非常令人困惑的错误:
java.lang.UnsatisfiedLinkError: Unable to load library 'FREngine':
JNA native support (darwin/libFREngine.jnilib) not found in resource path
(...entire classpath here...)
为什么这让我感到困惑:
DYLD_FRAMEWORK_PATH
?我尝试自己查看框架,只能看到细微差别:
FREngine.framework
位于/Library
,CoreFoundation.framework
位于/System/Library
FREngine.framework/Versions
包含一个名称比CoreFoundation.framework
更长,更复杂的目录,该目录只有一个名为A
的版本。FREngine.framework/Versions/[ver]
包含Headers
和Libraries
正在使用的JNA版本是3.5.2。我们无法升级到4.x,因为有一些其他错误会在我们尝试加载本机库时立即导致异常。
答案 0 :(得分:0)
在这种情况下,FREngine库在错误的引擎加载方法中不起作用的原因。预计FREngine仅通过com.abbyy.FREngine加载。