创建 Java 虚拟机JVM中的参数说明

1、上一篇创建虚拟机的代码加参数备注
var
Options: array [0 .. 4] of JavaVMOption;
VM_args: JavaVMInitArgs;
ErrCode: Integer;
begin
{ 创建 Java 虚拟机 }
FJavaVM := TJavaVM.Create(JNI_VERSION_1_8);
//这个选项设置 Java 类路径,指定 JVM 应该在哪里查找用户定义的类文件。您可以将其设置为包含您的 Java 类的目录
Options[0].optionString := PAnsiChar(AnsiString('-Djava.class.path=' + ExtractFilePath(ParamStr(0)) + 'classes'));
//JNI version java接口的版本号
VM_args.version := JNI_VERSION_1_8;
//给虚拟机参数赋值
VM_args.Options := @Options;
//Options数组的个数
VM_args.nOptions := 1;
//忽略无法识别的选项
VM_args.ignoreUnrecognized := True;
ErrCode := FJavaVM.LoadVM(VM_args);
if ErrCode < 0 then
begin
MessageBox(Handle, 'Create Java VM Error', 'Delphi 10.3 调用 Java Class', MB_OK OR MB_ICONERROR);
Halt;
Exit;
end;

{ 创建 Java 虚拟机运行环境 }
FJavaEnv := TJNIEnv.Create(FJavaVM.Env);
if FJavaEnv = nil then
begin
MessageBox(Handle, 'Create Java Env Error', 'Delphi 10.3 调用 Java Class', MB_OK OR MB_ICONERROR);
Exit;
end;
end;

2、一段c++中调用jvm的代码注释

include <jni.h>

include <stdio.h>

int main() {
JavaVM *jvm; // Pointer to the JVM (Java Virtual Machine)
JNIEnv *env; // Pointer to native interface
JavaVMInitArgs vm_args; // Initialization arguments
JavaVMOption options[4]; // JVM options

// Set the JVM options
options[0].optionString = "-Djava.compiler=NONE";  // Disable JIT
options[1].optionString = "-Djava.class.path=c:\\myclasses"; // User classes
options[2].optionString = "-Djava.library.path=c:\\mylibs"; // Native library path
options[3].optionString = "-verbose:jni"; // Print JNI-related messages

vm_args.version = JNI_VERSION_1_2; // JNI version
vm_args.options = options; // Options
vm_args.nOptions = 4; // Number of options
vm_args.ignoreUnrecognized = JNI_TRUE; // Ignore unrecognized options

// Create the JVM
jint ret = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
if (ret != JNI_OK) {
    fprintf(stderr, "Failed to create JVM\n");
    return 1; // Exit with error
}

// Your JNI code here

// Destroy the JVM
jvm->DestroyJavaVM();
return 0; // Exit successfully

}
①代码说明
JNI_CreateJavaVM: 这是创建 Java 虚拟机的函数。如果成功,它将返回 JNI_OK,否则返回一个错误代码。
jvm->DestroyJavaVM(): 在完成所有 JNI 操作后,记得调用此函数来销毁 JVM。
②注意事项
确保您已正确设置 Java 环境变量,并且指定的路径是正确的。
如果您在 Windows 上运行此代码,确保使用双反斜杠 \ 来分隔路径。
适当处理 JNI 调用的错误和异常,以确保程序的健壮性。
③选项解释
-Djava.compiler=NONE:
这个选项禁用 JIT(即时编译器)。在某些情况下,您可能希望禁用 JIT 编译,以便更容易调试或分析 Java 代码的执行。
-Djava.class.path=c:\myclasses:
这个选项设置 Java 类路径,指定 JVM 应该在哪里查找用户定义的类文件。您可以将其设置为包含您的 Java 类的目录。
-Djava.library.path=c:\mylibs:
这个选项设置 JNI 的本地库路径,指向包含本地共享库(如 DLL 文件)的目录。JNI 代码通常会调用这些本地库。
-verbose:jni:
这个选项启用 JNI 相关的详细输出,帮助调试和跟踪 JNI 调用过程。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ljklxlj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值