переносимый оператор для загрузки библиотеки JNI из другого каталога с использованием относительного пути?

Существует ли независимый от платформы оператор Java для загрузки собственной библиотеки из каталога, отличного от исходного кода Java? Я хотел бы использовать что-то вроде этого:

public class HelloWorld {
    static {
        System.loadLibrary("../some_project/HelloWorld");
    }

    public static native void print();
}

Проблема в том, что System.loadLibrary() не поддерживает разделители каталогов в аргументе имени пути. Кроме того, System.load(), к сожалению, требует абсолютного имени пути, что не только означает, что я не могу указать относительный каталог, как указано выше (что я хотел бы сделать), но также требует, чтобы аргумент включал, например, предыдущий Расширение «lib» и «.so» имени библиотеки JNI в системе Linux.

Есть ли стандартный способ справиться с этим? Если возможно, я хотел бы избежать написания кода Java, зависящего от платформы, только для создания правильного имени библиотеки JNI.

9
задан jvm_update 21 May 2012 в 19:55
поделиться