如何通过批处理指定特定Java版本的java.exe启动.jar文件并使其在自身目录运行
解决指定Java版本启动Jar并在自身目录运行的问题
这是个很常见的问题——当你切换到Java的bin目录再运行jar时,当前工作目录就变成了Java的安装目录,导致Jar的文件操作都指向那里。下面是一个简洁的批处理脚本,完美解决你的需求:
@echo off :: 定义指定版本Java的绝对路径(注意路径含空格,必须用引号包裹) set "JAVA_PATH=C:\Program Files\Java\jdk-15.0.2\bin\java.exe" :: 定义你的Jar文件绝对路径 set "JAR_LOCATION=C:\Users\Admin\Desktop\file\jarfile.jar" :: 切换到Jar文件所在的目录(%~dpJAR_LOCATION% 会提取Jar路径的目录部分) cd /d "%~dpJAR_LOCATION%" :: 使用指定Java版本启动Jar,同时保持当前工作目录为Jar所在文件夹 "%JAVA_PATH%" -jar "%JAR_LOCATION%" :: 可选:如果运行后想保持窗口打开,保留这行;否则可以删除 pause
脚本关键部分解释:
@echo off:关闭命令行的命令回显,让窗口输出更干净。set命令:把Java和Jar的路径定义为变量,后续修改更方便,不用到处找硬编码的路径。cd /d "%~dpJAR_LOCATION%":%~dpJAR_LOCATION%是批处理的特殊语法,会自动提取JAR_LOCATION变量中文件所在的目录路径(也就是C:\Users\Admin\Desktop\file\),/d参数确保即使Jar在不同盘符下也能正确切换目录。"%JAVA_PATH%" -jar "%JAR_LOCATION%":用绝对路径调用指定版本的Java,同时因为已经切换到Jar所在目录,Jar的所有文件创建/读取操作都会在这个目录下进行。
额外注意事项:
- 确保所有含空格的路径都用双引号包裹,避免命令解析错误。
- 如果不需要运行后保留命令窗口,直接删除最后一行的
pause即可。 - 如果你的Jar需要传递额外参数,可以在
-jar "%JAR_LOCATION%"后面添加,比如"%JAVA_PATH%" -jar "%JAR_LOCATION%" arg1 arg2。
内容的提问来源于stack exchange,提问作者CriticalHex
相关产品推荐
相关产品推荐

