我正在使用crate jni = { version = "0.20.0", features = ["invocation"] }
,并试图设置一个可以运行JNI东西的测试。
我的 Boot 代码如下
let jvm_args = InitArgsBuilder::new()
.version(JNIVersion::V8)
.option("-Xcheck:jni")
.build()
.unwrap();
let jvm = JavaVM::new(jvm_args).unwrap();
let _guard = jvm.attach_current_thread().unwrap();
let env = jvm.get_env().unwrap();
JavaClasses::init(&env);
字符串
我似乎不能让这个运行在mac上,因为当IDE RustRover
启动二进制文件,它总是有问题,找到动态链接库,抱怨
Error: could not find libjava.dylib
Failed to GetJREPath()
型
试图查找rpath
名称,似乎没有返回任何内容
➜ blaze git:(tests) ✗ otool -l xxxlaze/target/debug/deps/blaze_tests-b310798913eec8e4 | ag -C 5 LC_RPATH
➜ blaze git:(tests) ✗
型
我确实试图在build.rs中设置它们
println!("cargo:rustc-link-search=native={}", libjvm_path.display());
// println!("cargo:rustc-link-arg=-Wl,-rpath={}", libjvm_path.display());
println!("cargo:rustc-env=LD_LIBRARY_PATH={}", libjvm_path.display());
型
1条答案
按热度按时间7uhlpewt1#
我发送了一些类似于JNI crate的东西,用一个
build.rs
构建脚本来定位JVM路径,就像这样(与JNI crate中的版本完全相同)字符串
然后下面是键,设置
rpath
,用于定位dylib。型
这使得测试运行。