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

使用CMD执行javac -h生成JNI头文件时出现“file not found: Launcher.java”错误的解决方法

解决javac -h生成JNI头文件时"file not found: Launcher.java"的问题

我之前处理过类似的JNI头文件生成问题,这个错误的核心原因很简单:javac在当前CMD的工作目录下找不到你的Launcher.java源文件。下面给你两种适配自动化执行(配合jpackage)的解决方案,以及手动调试的快速方法:

方案1:先切换CMD工作目录到源文件路径(推荐用于自动化脚本)

如果要把命令集成到其他程序自动执行,最稳妥的方式是先让CMD切换到Launcher.java所在的目录,再执行javac命令。

比如假设你的Launcher.java放在E:\Java\Auto Key Press\src文件夹下,先执行目录切换命令:

cd /d "E:\Java\Auto Key Press\src"

然后再执行你的javac命令(此时无需修改Launcher.java的写法,因为当前目录已经是源文件所在目录):

javac -h "E:\JNI\_JavaHeaders" Launcher.java -cp "E:\Java\Auto Key Press\bin" -d "E:\JNI\_JavaHeaders\ClassFiles" -encoding utf8 --module-path "D:\Java\javafx-jmods-16" --add-modules javafx.controls,javafx.graphics,javafx.fxml,javafx.base

如果是写批处理脚本,把这两行命令放在一起即可,自动化执行时不会出现路径问题。

方案2:给Launcher.java指定完整绝对路径

如果你不想切换目录,也可以直接在javac命令里给Launcher.java加上它的完整路径。比如还是假设源文件在E:\Java\Auto Key Press\src下,修改后的命令如下:

javac -h "E:\JNI\_JavaHeaders" "E:\Java\Auto Key Press\src\Launcher.java" -cp "E:\Java\Auto Key Press\bin" -d "E:\JNI\_JavaHeaders\ClassFiles" -encoding utf8 --module-path "D:\Java\javafx-jmods-16" --add-modules javafx.controls,javafx.graphics,javafx.fxml,javafx.base

这样javac就能精准定位到源文件,不会再报找不到的错误。

手动调试的快速验证方法

如果只是想手动调试验证命令是否正常,可以用这个快捷方式:

  • 打开文件资源管理器,进入Launcher.java所在的文件夹
  • 按住SHIFT键,右键点击文件夹空白处,选择「在此处打开PowerShell窗口」
  • 在PowerShell中输入cmd切换到CMD环境,然后执行你的javac命令即可,此时当前目录就是源文件所在目录,命令会正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:47:37