gpt4 book ai didi

java - "Unable to load library: JNA native support not found in resource path"尝试在 Mac OS X 上加载 JNA 库

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:29 25 4
gpt4 key购买 nike

我有一个像这样的 JNA 库 stub :

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...)

为什么这让我感到困惑:

  • .jnilib 是 JNI 库的文件扩展名。由于我使用的是 JNA,因此我不希望 JNA 使用除它自己的“jnidispatch”之外的任何 JNI 库。
  • JNA 正在查找该文件的类路径,但是根本不可能它会在那里,因为它只是我试图导入的一些随机库。它不应该在 DYLD_FRAMEWORK_PATH 上查找吗?
  • 以完全相同的方式初始化的其他 native 库工作正常。比如CoreFoundation就可以解决。除了库的名称不同之外,其加载库的代码是相同的。

我尝试查看框架本身,但只能看到细微的差异:

  • FREngine.framework位于/Library中,CoreFoundation.framework位于/System/Library<
  • FREngine.framework/Versions 包含一个比 CoreFoundation.framework 名称更长、更复杂的目录,该目录只有一个名为 A 的版本>.
  • FREngine.framework/Versions/[ver] 包含 header

使用的JNA版本是3.5.2。我们无法升级到 4.x,因为还有一些其他错误,一旦我们尝试加载 native 库就会导致异常。

最佳答案

在这种情况下,FREngine 库在错误的引擎加载方法中不起作用的原因。 FREngine 预计仅通过 com.abbyy.FREngine 加载。

关于java - "Unable to load library: JNA native support not found in resource path"尝试在 Mac OS X 上加载 JNA 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com