批处理调用Java @-文件启动MC服务器报错:找不到主类
Minecraft服务器批处理启动失败的原因及解决办法
1. 工作目录不匹配
手动执行命令时,你是在服务器根目录下操作,相对路径libraries\net\neoforged\neoforge\21.1.37\win_args.txt能被正确识别。但双击运行run.bat时,批处理的工作目录可能并非服务器根目录(比如批处理放在子文件夹、或通过快捷方式启动时指定了其他目录),导致Java找不到@参数文件,误将路径当作主类名。
解决:在批处理开头添加目录切换命令,强制进入批处理所在的服务器根目录:
@echo off cd /d "%~dp0" java -Xmx4G @libraries\net\neoforged\neoforge\21.1.37\win_args.txt %*
%~dp0会自动获取批处理文件的绝对路径,cd /d确保跨盘符切换也生效。
2. 批处理文件编码异常
如果run.bat以UTF-8编码保存且带有BOM(字节顺序标记),Windows命令解释器会把BOM当作命令的一部分,导致Java错误解析@libraries\...路径。
解决:用记事本打开批处理,选择「另存为」,编码选ANSI后覆盖保存。
3. 参数解析冲突
极少数情况下,批处理中的%*(传递外部参数)可能和@参数文件的内容产生解析冲突。你可以先测试不带%*的命令:
java -Xmx4G @libraries\net\neoforged\neoforge\21.1.37\win_args.txt
如果能正常启动,再逐步添加%*;若路径包含空格,给@参数文件路径加引号:
java -Xmx4G "@libraries\net\neoforged\neoforge\21.1.37\win_args.txt" %*
4. Java环境版本不一致
手动执行时用的是Java 21,但批处理运行时可能调用了PATH环境变量中其他版本的Java,导致@参数文件的解析逻辑不兼容。
解决:在批处理中明确指定Java 21的绝对路径,比如:
"C:\Program Files\Java\jdk-21\bin\java.exe" -Xmx4G @libraries\net\neoforged\neoforge\21.1.37\win_args.txt %*
替换为你实际的Java安装路径。
内容的提问来源于stack exchange,提问作者Joshua Roberts
相关产品推荐
相关产品推荐

