Mac M1 上的 Java 8/11 JNI

问题描述 投票:0回答:0

我正在尝试在 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 和不同的参数组合,但徒劳无功。

java cmake java-native-interface
© www.soinside.com 2019 - 2024. All rights reserved.