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

JDK8迁移至JDK11使用javac生成JNI头文件报invalid flag: -jni如何解决

报错原因

-jni是已废弃的javah工具专属参数,javac命令本身不支持该参数,这是触发报错的直接原因。

修复方案

按以下步骤调整命令即可:

  1. 删除命令中的-jni参数
  2. 将命令中的JDK路径替换为你的JDK11实际安装路径,不要继续使用JDK8的javac.exe
  3. javac的-h参数本身就用于指定JNI头文件的输出目录,无需保留原javah的-d参数
  4. 原javah调用时末尾传的是全类名,javac生成JNI头时需要传入对应类的.java源文件物理路径,找到pii.AvusEcd.LibProxy.SensorCarrierProxy对应的源文件替换命令末尾的全类名即可。

正确命令示例

"$(JDK11_x86)\bin\javac.exe" -h "$(ProjectDir)Source" -classpath "$(ProjectDir)..\..\dist\Avus_ESCD.jar" 你的项目源文件根路径/pii/AvusEcd/LibProxy/SensorCarrierProxy.java

注意事项

  • 提前创建好-h参数指定的输出目录$(ProjectDir)Source,javac不会自动创建不存在的目录,否则会触发目录不存在的报错
  • 如果你确实只能拿到编译后的Jar包、没有对应Java源文件,可以临时保留JDK8的javah工具单独完成JNI头生成步骤,不影响其余代码升级到JDK11运行。

内容的提问来源于stack exchange,提问作者Mutahir Kiani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:39:02