Нативной интерфейс Java не работает в M2 Mac ProC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Нативной интерфейс Java не работает в M2 Mac Pro

Сообщение Anonymous »

Я пытаюсь сделать простой пример JNI (родной интерфейс Java) в M2 Mac Pro. Но я продолжаю получать < /p>
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path:
< /code>
ниже приведены подробности < /p>
hello.java
import java.io.*;

class Hello {
public native void print_Hello();

// Load the native library
static {
System.loadLibrary("hello");
}

// Main Method
public static void main (String[] args) {
System.out.println("In this Program we will learn about Java Native");
// Create an instance of Hello and call the native method
Hello hello = new Hello();
hello.print_Hello();
}
}

< /code>
hello.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class Hello */

#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Hello
* Method: print_Hello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_Hello_print_1Hello
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

< /code>
hello.cpp
// C Program to Use Print Hello World
#include
#include
#include "Hello.h"

// Implementation of the native method print_Hello()
JNIEXPORT void JNICALL Java_Hello_print_1Hello(JNIEnv *env, jobject obj) {
printf("Hello World!\n");
return;
}

< /code>
ниже была командой для генерации собственной библиотеки < /p>
gcc -shared -fpic -o libhello.dylib -I${JAVA_HOME}/include -I${JAVA_HOME}/include/darwin Hello.cpp
< /code>
он затрагивает библиотеку < /p>
libhello.dylib
< /code>
java Command, выполненная для запуска файла Java < /p>
java -Djava.library.path=~/work/active/java_native/mac_native/libhello.dylib Hello
< /code>
ниже вывод < /p>
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path: [~/work/active/java_native/mac_native/libhello.dylib]
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2678)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
at java.base/java.lang.System.loadLibrary(System.java:1890)
at Hello.(Hello.java:11)
< /code>
Java и C Compilers Используются < /p>
g++ --version
Apple clang version 17.0.0 (clang-1700.0.13.3)
Target: arm64-apple-darwin24.4.0
Thread model: posix
< /code>
openjdk version "11.0.24" 2024-07-16
OpenJDK Runtime Environment Temurin-11.0.24+8 (build 11.0.24+8)
OpenJDK 64-Bit Server VM Temurin-11.0.24+8 (build 11.0.24+8, mixed mode)
< /code>
alternate version of java used that also did not work
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)


Подробнее здесь: https://stackoverflow.com/questions/795 ... m2-mac-pro
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»