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

开机自启Java程序时CLI参数被忽略,触发ArrayIndexOutBoundsException

问题原因及解决办法
  • start命令的语法陷阱:Windows的start命令会把第一个带引号的参数当作控制台窗口的标题,而非命令的参数。你的脚本里"Program.jar"是第一个带引号的内容,开机启动时start会把它解析成窗口标题,导致实际传给javaw的参数变成-jar "some default arg"——这种情况下javaw找不到对应jar文件,或者即便通过异常分支启动了程序,参数也根本没传进去,自然触发ArrayIndexOutBoundsException。而手动双击时,cmd的解析逻辑相对宽松,没触发这个问题。

  • 工作目录差异:手动双击脚本时,cmd的工作目录是脚本所在文件夹,javaw能正确找到相对路径下的Program.jar;但开机启动时,脚本的工作目录默认是C:\Windows\System32,如果Program.jar不在这个目录里,javaw会找不到jar文件,进而导致参数传递失效。

解决办法

  1. 修正start命令的写法,添加空的窗口标题参数:

    start "" javaw -jar "Program.jar" "some default arg"
    
  2. 将Program.jar改为绝对路径,彻底避免工作目录带来的问题:

    start "" javaw -jar "C:\你的程序存放路径\Program.jar" "some default arg"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:03:39