Java传递系统属性时CMD正常PowerShell报Could not find or load main类错误
问题原因与解决方法
核心差异:CMD与PowerShell的续行符规则不同
你在CMD里用^作为换行续行符是正确的,但PowerShell中^是转义字符,不是续行符。当同事直接把CMD的命令放到PowerShell执行时:
- 每行末尾的
^会转义下一行开头的字符(比如空格或-),导致参数解析混乱 - 原本的
-Damp.server=mfpp被错误拆分,PowerShell把.server=mfpp当成了要执行的主类名,从而抛出Could not find or load main class错误
正确的PowerShell执行方式
有两种修正方法:
- 替换续行符:把所有
^换成PowerShell的续行符(反引号,和键盘上的~同键位)java -Damp.server=mfpp ` -Damp.setting2=value2 ` -Damp.setting3=value3 ` -jar target\MyProject-0.0.1-SNAPSHOT.jar - 合并为单行命令:直接去掉所有续行符,写成一行执行
java -Damp.server=mfpp -Damp.setting2=value2 -Damp.setting3=value3 -jar target\MyProject-0.0.1-SNAPSHOT.jar
内容的提问来源于stack exchange,提问作者redOctober13
相关产品推荐
相关产品推荐

