У меня есть заглушка библиотеки 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
это не должно выглядеть 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 только.