【问题标题】:Maven Surefire 2.13 fails to fork on WindowsMaven Surefire 2.13 无法在 Windows 上分叉
【发布时间】:2013-03-08 13:34:49
【问题描述】:

我有一个项目,其中包含许多测试用例,我使用 Maven surefire 插件 2.13 对其进行编译。当我设置 forkmode = none 时一切正常,但是当我省略该条目时,默认的 forkmode 变为 once 并且我的项目失败:

Forking command line: cmd.exe /X /C ""C:\Program Files\Java\jdk1.6.0_37\jre\bin\java" -jar G:\Gottware-server\core\math\target\surefire\surefirebooter
7758025909061587587.jar G:\Gottware-server\core\math\target\surefire\surefire8735550212668630533tmp G:\Gottware-server\core\math\target\surefire\suref
ire_08386349728753606434tmp"
The system cannot find the path specified.

看起来是操作系统问题,我使用的是 Windows 7。可能出了什么问题?很好奇的是,在成功构建之后我也会遇到同样的错误:

[INFO] -----------------------------------------------
[INFO] BUILD SUCCESS
[INFO] -----------------------------------------------
[INFO] Total time: 15.504s
[INFO] Finished at: Fri Mar 08 15:08:54 CET 2013
[INFO] Final Memory: 13M/353M
[INFO] -----------------------------------------------
The system cannot find the path specified.

事实上我已经调试了我的mvn.bat的maven的最后一行

cmd /C exit /B %ERROR_CODE%

这根本不再适用于返回:

The system cannot find the path specified.

我进一步调试:

U:\>cmd.exe
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
The system cannot find the path specified.

【问题讨论】:

  • 这个问题看起来与 maven 无关,而与我的计算机设置有关...
  • U:\>cmd.exe Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。版权所有。系统找不到指定的路径。

标签: java windows maven


【解决方案1】:

在您粘贴的行中,我看到一个双引号:

Forking command line: cmd.exe /X /C ""C:\Program
                                   ^^^^

也许您为 JAVA_HOME(或您定义 Java 路径的其他地方)设置了错误的值。这也可以解释为什么它不会在其他系统上失败:您在那里有一个不同(并且正确)的 JAVA_HOME。

【讨论】:

  • 我的 java home 是正确的,看起来 maven 用双括号括起来
  • 我也在使用 Windows 7,带有 forkmode "once" 的 surefire 插件,并在日志中看到相同的语句:Forking command line: cmd.exe /X /C ""c:\Program Files\Java...。对我来说效果很好。
  • 看来问题出在 cmd /C exit /B 0
【解决方案2】:

surefire 插件并不总是报告友好的错误。我可以考虑检查的几件事:

  • G:\Gottware-server\... 中有多少可用磁盘空间?您是否遇到了磁盘配额(在 NAS 共享上)或者您的笔记本电脑驱动器已满?
  • 还要检查本地工件存储库的位置。您是否达到了配额/那里的空间不足?
  • 构建机器上有多少可用内存?您是否有足够的内存来在单独的 JVM 中运行测试,如果有,JVM 是否配置为具有足够的内存?您可以尝试使用 <argLine> 属性来配置分叉 VM 的内存设置。 (我还帮助了在<argLine> 中有大量内存设置的人,超过了运行 Eclipse 和多个浏览器窗口等机器上的可用内存设置。在这种情况下,降低分叉 JVM 的内存设置解决了这个问题。 )

【讨论】:

  • 一切正常。看来问题出在我的机器设置上:运行 cmd /C exit /B %ERROR_CODE% 不起作用!
【解决方案3】:

我遇到了同样的错误,因为我在 cmd 启动时自动启动了一个 bat 文件(我猜是一些链接路径问题)。

我将引用这个答案来解释我的解决方案:https://superuser.com/questions/144347/is-there-windows-equivalent-to-the-bashrc-file-in-linux#answer-916478

我的脚本名为bashrc.bat,我将它放在我的%USERPROFILE% 文件夹下。

在注册表编辑器 (regedit) 中,我找到了以下条目:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor

然后添加一个名为 Autorun 的键,其值为 %USERPROFILE%\bashrc.bat

当我从注册表中删除此键时,再次启动 cmd 后,The system cannot find the path specified. 行不再显示,surefire 可以恢复其活动。

【讨论】:

  • 请用实际代码重做这个,而不仅仅是链接(你可以保留链接),这是一个可以接受的答案。我们不希望该站点最终不可用并且答案丢失。更好的是包含其他页面的相关部分。最好是使用其他页面的相关部分对发布的代码进行更正。此处回答标准 -> stackoverflow.com/help/how-to-answer
猜你喜欢
  • 2018-07-15
  • 2011-04-05
  • 2011-03-31
  • 2017-11-09
  • 1970-01-01
  • 2019-08-20
  • 2019-07-12
  • 1970-01-01
  • 2018-11-12
相关资源
最近更新 更多