Исключение в потоке "main" java.lang.UnsatisfiedLinkError с JNI на MacOs - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь узнать о JNI, но в первой программе, которую я написал, она дает следующее исключение при запуске скомпилированной программы Java.

   Exception in thread "main" java.lang.UnsatisfiedLinkError: no prtmsg in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at MyMain.<clinit>(main.java:5)

это мой список файлов каталогов Снимок экрана direcotry

Это java-файл

class MyMain{

    public native void printmsg();
    static{
        System.loadLibrary("prtmsg");
    }

    public static void main(String[] args){
        MyMain mm = new MyMain();
        mm.printmsg();
    }
}

Пожалуйста, помогите мне решить эту проблему,Заранее спасибо:)

1 Ответ

0 голосов
/ 17 октября 2018

Я нашел ответ на этот вопрос при использовании MacOS для компиляции кода c, мы должны использовать следующую команду:

gcc -shared -o libLibraryName.dylib CProgramName.c -fPIC

здесь как имя скомпилированного кода, которое должно начинаться с lib в началеи .dylib и конец.

При загрузке в java

 static{
        System.loadLibrary("LibraryName");
    }

без использования libLibraryName.dylib просто используйте LibraryName.Извлеките lib и .dylib!

...