Код: Выделить всё
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 будет использовать какую-либо библиотеку JNI, кроме своей собственной, "jnidispatch".
- JNA ищет путь к классам для этого файла, но ни в коем случае она там не окажется, потому что это просто какая-то случайная библиотека, которую я пытаюсь импортировать. Разве он не должен искать DYLD_FRAMEWORK_PATH?
- Другие собственные библиотеки, которые инициализируются точно таким же образом, работают нормально. Например, можно разрешить CoreFoundation. Код для загрузки библиотеки тот же, за исключением того, что имя библиотеки отличается.
- находится в /Library, CoreFoundation.framework находится в /System/Library
Код: Выделить всё
FREngine.framework - содержит каталог с более длинным и сложным именем, чем CoreFoundation.framework, который имеет только одну версию под названием A.
Код: Выделить всё
FREngine.framework/Versions - содержит заголовки и библиотеки
Код: Выделить всё
FREngine.framework/Versions/[ver]