我有一个像这样的 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,因为还有一些其他错误会在我们尝试加载本机库时立即导致异常。
在错误的引擎加载方法下,FREngine 库在这种情况下不起作用的原因。 FREngine 预计只能通过 com.abbyy.FREngine 加载。