-Djava.endorsed.dirs=D:\Tomcat\apache-tomcat-7.0.86\endorsed is not supported. Endorsed standards an

本文介绍了一种常见的Eclipse中启动Tomcat遇到的控制台报错问题及解决方案。当控制台出现-Djava.endorsed.dirs参数错误时,只需在Run Configurations的VM arguments中删除该参数,即可成功运行。

在eclipse里启动tomcat时控制台报错:-Djava.endorsed.dirs=D:\tomcat\apache-tomcat-7.0.86\endorsed is not supported. Endorsed standards and standalone APIs in

解决方案:

在Eclipse的Run -> Run Configurations的界面里

有一个设置参数里Arguments页面里的VM arguments的参数里面把最后的有-Djava.endorsed.dirs="D:\java\tomcat\apache-tomcat-7.0.86endorsed"的参数删除,然后点击Apply,再点Run就行了。

### 问题分析 在运行 Java 程序时,出现了错误信息: ``` Cannot run program "C:\Program Files\Java\jdk1.8.0_311\bin\java.exe" (in directory "C:\Users\Administrator\AppData\Local\JetBrains\IdeaIC2021.2\compile-server"): Malformed argument has embedded quote: -Djava.endorsed.dirs=\" ``` 此错误表明 JVM 在解析启动参数时遇到了格式问题,具体是参数 `-Djava.endorsed.dirs=\"` 中存在非法的嵌入引号。Java 的 `ProcessBuilder` 或 `Runtime.exec` 在解析命令行参数时对引号和空格有严格的格式要求,若参数中包含空格或特殊字符而未正确转义,就会导致此类异常。 --- ### 原因解析 1. **命令行参数格式问题**: Java 启动器在解析命令行参数时,会将参数按空格分隔,并对引号进行特殊处理。如果参数中包含空格但未用引号包裹,或引号未正确闭合,会导致 `Malformed argument has embedded quote` 错误。 2. **路径中包含空格**: 例如 `C:\Program Files\Java\jdk1.8.0_311\bin\java.exe` 中的 `Program Files` 包含空格,必须用双引号包裹整个路径或确保路径中没有空格。 3. **JVM 参数格式错误**: 参数 `-Djava.endorsed.dirs=\"` 中的引号使用方式不正确,应确保路径值被正确引用或避免使用不必要的引号。 --- ### 解决方案 #### 1. 确保路径参数使用正确的引号包裹 在启动命令中,所有包含空格的路径都应使用英文双引号包裹。例如: ```bash "C:\Program Files\Java\jdk1.8.0_311\bin\java.exe" -Djava.endorsed.dirs="C:\Program Files\Java\jdk1.8.0_311\lib" -jar myapp.jar ``` 确保 `-Djava.endorsed.dirs` 的值被正确引用,避免出现未闭合或多余的引号。 #### 2. 使用 `ProcessBuilder` 时正确构造参数列表 如果通过 Java 代码调用外部命令,应将命令和参数作为字符串数组传入,避免手动拼接字符串: ```java ProcessBuilder pb = new ProcessBuilder( "C:\\Program Files\\Java\\jdk1.8.0_311\\bin\\java.exe", "-Djava.endorsed.dirs=C:\\Program Files\\Java\\jdk1.8.0_311\\lib", "-jar", "myapp.jar" ); ``` 这样可以避免因手动拼接导致的引号错误。 #### 3. 启用模糊命令执行模式(适用于 JetBrains IDE) 在 IntelliJ IDEA 或其他 JetBrains IDE 中配置运行参数时,可在 VM options 中添加: ```bash -Djdk.lang.Process.allowAmbiguousCommands=true ``` 此参数允许 JVM 在解析命令行参数时放宽对格式的限制,从而避免因引号或空格导致的错误[^2]。 #### 4. 检查环境变量和脚本中的路径引用 确保所有环境变量(如 `JAVA_HOME`)和脚本中引用的路径都使用英文双引号包裹,或使用短路径(如 `Progra~1`)替代包含空格的完整路径。 --- ### 验证方式 1. 手动在命令行中执行 Java 启动命令,确认是否仍报错。 2. 在 IDE 中重新配置运行参数后重启应用,观察是否正常启动。 3. 检查日志文件中是否仍有 `Malformed argument` 错误。 --- ###
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值