Java 使用 Maven 无法构建:无法 运行 程序 "cmd" "Malformed argument has embedded quote"

Java with maven wouldn't build: Cannot run program "cmd" "Malformed argument has embedded quote"

我全新安装了 netbean 11.1。 现在我正在尝试构建一个项目,但我得到以下错误输出:

Cannot run program "cmd" (in directory "C:\projects\open"): Malformed argument has embedded quote: "C:\Program Files\NetBeans-11.1\netbeans\java\maven\bin\mvn.cmd"

cd C:\projects\open; "JAVA_HOME=C:\Program Files\Java\jdk-11.0.5" cmd /c "\"\"C:\Program Files\NetBeans-11.1\netbeans\java\maven\bin\mvn.cmd\" -DskipTests=true -Dmaven.ext.class.path=\"C:\Program Files\NetBeans-11.1\netbeans\java\maven-nblib\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 clean install\"" Cannot run program "cmd" (in directory "C:\projects\open"): Malformed argument has embedded quote: "C:\Program Files\NetBeans-11.1\netbeans\java\maven\bin\mvn.cmd" -DskipTests=true -Dmaven.ext.class.path="C:\Program Files\NetBeans-11.1\netbeans\java\maven-nblib\netbeans-eventspy.jar" -Dfile.encoding=UTF-8 clean install

我以前用 netbeans 11.1 构建过这个项目,但是有一台新电脑。 和全新安装,我确信上次我尝试安装所有内容时没有问题。

您有没有为 java 安装最新的重要更新? jdk1.7_241?我今天安装了它,但遇到了完全相同的问题。我降级了我的 jdk 版本,它完全解决了它。

编辑:抱歉,我注意到你使用的是 netbeans 11.1,所以你可能有更高的 java 版本,无论如何,你可以尝试将你的 java 版本降级到以前的版本,如果你今天正好更新了它,因为其他版本可能有同样的问题。

在我撰写本文时,我的机器上只安装了 JDK13。解压缩我的 netbeans 后,我的 netbeans 11.1 的内部 Maven 遇到了同样的问题。

显然 netbeans 11.1 不能与 JDK13 一起正常工作。我刚刚安装了JDK 8,现在问题已经解决,没有任何额外的配置或参数更改。

不过,因为我需要 JDK13,所以我都安装了,但我的 netbeans.conf 文件指向 JDK8。稍后,您可以在 netbeans 项目配置中定义新的 Java 平台。

希望这对您有所帮助。

干杯!

Apache NetBeans 11.1 确实不支持 JDK13,这就是即将推出的 Apache NetBeans 11.2 的用途 -- 最新测试版:位。ly/apache-netbeans-11-2-beta-3

最近发布的所有 jdk 版本(至少 11.0.5 和 13.0.1)似乎都会发生这种情况,即使是最新的 Netbeans 11.2vc1(也在 NB 11.1 上见证)。 将 jdk 降级到 11.0.4 或 13.0.0。它为我解决了这个问题

我在使用 oracle jdk 13.0.1 和 netbeans 11.1 时遇到了同样的问题,但它适用于 openjdk 13.0.1 (https://jdk.java.net/13/).

问题也发生在版本jdk-8u231。修复安装 jdk-8u221 版本

我已经在 https://www.oracle.com/technetwork/java/javase/13-0-1-relnotes-5592797.html#JDK-8221858

查看了 JDK 13.0.1 的发行说明

此行为是 JDK-8221858(而非 public)的安全修复程序的倒退。按照 link 获取完整说明。该修复程序是 JDK 8u231、JDk 11.0.5、13.0.1 等

的一部分

要解决此问题,请将 -J-Djdk.lang.Process.allowAmbiguousCommands=true 附加到 <netbeans-dir>\etc\netbeans.conf 中的 netbeans_default_options

我在旧项目的 adopt8-hotspot (AdoptOpenJDK-1.8.0_232-b09)sbt-0.13.X 中遇到了这个错误。

通过

在windows中设置环境变量后问题解决
set JAVA_TOOL_OPTIONS=-Djdk.lang.Process.allowAmbiguousCommands=true

虽然这个问题可以通过安装jdk1.8.0_221来解决,但实际上你不需要降级你的JDK。试试这些:

  1. 首先退出 netbeans IDE 如果它是打开的,然后从这里打开 netbeans 配置文件:netbeans-Install-Dir/etc/netbeans.conf (注意:对我来说 netbeans-Install-Dir 是 C:\Program Files\NetBeans 8.2\etc)
  2. 添加以下参数
-J-Djdk.lang.Process.allowAmbiguousCommands=true
  1. 到您在该行找到的字符串的开头:
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m ......."

示例截图如下:
4. 保存更改并启动您的 netbeans IDE.

只需将 -J-Djdk.lang.Process.allowAmbiguousCommands=true 添加到 netbeans.conf

中的 netbeans_default_options