记文件行尾符导致报错 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++ 来处理:

  1. 打开文件。
  2. 点击菜单栏的编辑->文档格式转换->转换为 Unix (LF)
  3. 保存文件。
posted @ 2025-08-23 23:12  Higurashi-kagome  阅读(31)  评论(0)    收藏  举报