首页 > 解决方案 > 如何告诉 Java Invocation Api 使用哪个 java vm?

问题描述

我正在尝试使用 c++ 中的 java 调用 api 为我在 java 中编写的游戏创建一个启动器。我希望它使用我与游戏捆绑在一起的 jre 文件夹(来自 openjdk),以便计算机上没有 Java 的人仍然可以玩游戏。

但是,这似乎在我朋友的计算机上不起作用(他没有安装 java),并且出现以下消息:“代码执行无法继续,因为找不到 jvm.dll。” 我们俩都在运行Windows 10。

我尝试将系统属性 java.home 设置为该 jre 文件夹,如下所示:

JavaVMInitArgs vm_args;
JavaVMOption* options = new JavaVMOption[4];

options[0].optionString = "-Djava.class.path=run.jar";
options[1].optionString = "-Djava.home=jre";
options[2].optionString = "-Xms1m"; // 1MB
options[3].optionString = "-Xmx1g"; // 1GB

vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 3;
vm_args.options = options;
vm_args.ignoreUnrecognized = false;

JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);

有没有人对此有任何见解?我必须使用 java 调用库而不是仅仅调用带有一些标志的 javaw.exe,因为我需要传递一个全局变量来告诉具有多个 GPU 的笔记本电脑使用更强大的 GPU。

谢谢!

标签: javajava-native-interfacelwjgloptimus

解决方案


推荐阅读