You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET使用Javonet运行示例报Initializing JVM failed如何解决

「Initializing JVM failed」异常排查解决步骤
  • 确认JDK路径配置正确:检查Activate方法第三个参数传入的JDK路径和你本地实际安装路径完全一致,示例中默认填写的@"C:\Program Files (x86)\Java\jdk1.8.0_144"仅为参考,必须替换为你的真实JDK路径
  • 确认JDK与.NET项目架构匹配:如果你的.NET项目目标平台为x86/开启了「优先32位」选项,必须使用32位JDK;如果目标平台为x64,必须使用64位JDK,架构不匹配是触发该异常最常见的原因
  • 确认激活凭证有效:Activate方法前两个参数需要填入你申请的真实授权邮箱和密钥,无效凭证会导致初始化阶段连带JVM启动失败
  • 确认JDK版本适配:优先使用JDK8、JDK11这类长期支持版本,避免使用非LTS的高版本JDK引发兼容性问题
  • 确认依赖文件完整:确保SampleJavaJar.jar文件放在程序运行目录下,Javonet核心运行依赖无缺失

修正后参考代码

/// 本示例展示如何创建Java类实例、调用方法以及获取/设置字段
static void Main(string[] args)
{
    Console.WriteLine("正在激活Javonet...");
    JavonetBridge.Javonet.Activate("你的注册邮箱", "你的授权密钥",
        @"你本地的JDK实际安装路径");

    JavonetBridge.Javonet.AddReference(@"SampleJavaJar.jar");

    // 创建Java类实例
    var sampleClass = JavonetBridge.Javonet.New("SampleJavaClass");

    // 调用实例方法
    String res = sampleClass.Invoke("SayHello", "Student");
    Console.WriteLine("Java方法'SayHello'返回结果:" + res);
    // 设置字段值
    sampleClass.Set("numberA", 4);
    sampleClass.Set("numberB", 8);
    // 获取字段值
    var a = sampleClass.Get("numberA");
    Console.WriteLine("字段'numberA'的值为:" + a);
    var b = sampleClass.Get("numberB");
    Console.WriteLine("字段'numberB'的值为:" + b);
    // 调用返回int类型的实例方法
    int result = sampleClass.Invoke("SumAandB");
    Console.WriteLine("A与B的和为:" + result);
    // 调用传入int参数的方法
    int multiplyResult = sampleClass.Invoke("Multiply", 10, 4);
    Console.WriteLine("10与4的乘积结果为:" + multiplyResult);
    Console.WriteLine("\n\n恭喜!你已成功从.NET中调用Java代码,是不是很简单?");
    Console.ReadLine();
}

内容的提问来源于stack exchange,提问作者Görkem ÖNER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:21:04