我正在尝试在 Mac M1 中使用 Java JNI 进行一些探索,但遇到了一些异常,
使用
cmake --build build
构建项目
[ 20%] Building Java objects for sbmcprj.jar
[ 40%] Generating CMakeFiles/sbmcprj.dir/java_class_filelist
[ 60%] Creating Java archive sbmcprj.jar
[ 60%] Built target sbmcprj
[ 80%] Building CXX object CMakeFiles/sbmc.dir/native/com_damonyuan_jni_HelloWorldJNI.cpp.o
[100%] Linking CXX shared module libsbmc.dylib
ld: warning: ignoring file /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/lib/server/libjvm.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
ld: warning: ignoring file /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/lib/libjawt.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
[100%] Built target sbmc
它给出警告
building for macOS-arm64 but attempting to link with file built for macOS-x86_64
,一旦运行JNI项目,
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/java -Djava.library.path=/Users/damonyuan/Desktop/sbmc-jni/native -classpath /Users/damonyuan/Desktop/sbmc-jni/target/classes com.damonyuan.jni.HelloWorldJNI
error: null
/Users/damonyuan/Desktop/sbmc-jni/native
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'void com.damonyuan.jni.HelloWorldJNI.sayHello()'
at com.damonyuan.jni.HelloWorldJNI.sayHello(Native Method)
at com.damonyuan.jni.HelloWorldJNI.main(HelloWorldJNI.java:15)
Process finished with exit code 1
抛出上述异常
整个测试代码在这里,谁能帮我告诉我如何让它运行?
我曾尝试在 cmake 配置中搜索 google 和不同的参数组合,但徒劳无功。