记文件行尾符导致报错 Invalid maximum heap size
在 Linux 上部署 Java 程序,报错:
Invalid maximum heap size: -Xmx128m^M
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
简单来说:因为启动脚本包含了 Windows 格式的行尾符,在 Linux/macOS 系统上无法被正确解析。
具体来说,问题出在参数-Xmx128m^M。Java 虚拟机(JVM)无法识别^M作为参数的一部分。
^M是回车符(Carriage Return, CR)在类 Unix 系统(如 Linux, macOS)终端里的显示方式。它对应的 ASCII 码是\r。
脚本或命令行参数文件是在 Windows 上创建或编辑的。Windows 使用两个字符(CR+LF, 即\r\n)作为行尾符,而 Linux/macOS 只使用一个字符(LF, 即\n)。当这个脚本在 Linux/macOS 上运行时,每行末尾的CR (\r)没有被正确识别为行尾符,而是被当作参数本身的一部分,于是就出现了-Xmx128m^M这种无效参数。
可以使用 Notepad++ 来处理:
- 打开文件。
- 点击菜单栏的
编辑->文档格式转换->转换为 Unix (LF)。 - 保存文件。
浙公网安备 33010602011771号