gpt4 book ai didi

java - 如何在 C++(JNI) 中设置正在运行的 JVM 的类路径?

转载 作者:搜寻专家 更新时间:2023-10-31 02:10:26 24 4
gpt4 key购买 nike

在 C++ (JNI) 中,我使用以下 JNI 函数获得了一个已经在运行的 JVM:

JNI_GetCreatedJavaVMs(&jvm,1,&vmnb);

然后我使用以下代码附加当前线程:

jvm->AttachCurrentThread((void**)&env, NULL);

问题:在那种情况下我如何设置类路径?谢谢。

注意:创建 JVM 并将 vm_args 中的类路径传递给新 JVM 不是我的选择。

最佳答案

因为可以在 Java 中附加 classpath,所以我找到了另一种方法,通过 Java 在 C++ 中设置类路径。因为我已经在运行 JVM,所以我在已经在 J​​VM 中运行的 Java 程序中使用附加类路径方法(void addPath(String path),发布在 this answer 中)。我使用 JNI 调用从 C++ 访问 addPath java 方法以附加类路径。从 C++ 传递给 addPath 方法的类路径不应包含 "-Djava.class.path",它应该只是 .jar 文件的完整路径,即 “C:\\文件夹\\abc.jar”。所以顺序是:1) 获取已经运行的 JVM,将当前线程附加到 JVM,获取 JNI 环境指针,然后使用 JNI 从 C++ 调用(另一个正在运行的线程的)addPath java 函数。我现在可以从 C++ 成功访问新类路径(.jar 文件)的类。

关于java - 如何在 C++(JNI) 中设置正在运行的 JVM 的类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45232522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com