【问题标题】:Cannot run program "C:\Program Files\Java\jdk1.6.0_24\jre\bin\java.exe": CreateProcess error=87, The parameter is incorrect无法运行程序“C:\Program Files\Java\jdk1.6.0_24\jre\bin\java.exe”:CreateProcess error=87,参数不正确
【发布时间】:2011-09-14 13:01:21
【问题描述】:

我正在尝试使用 Ant 构建一个 Web 应用程序。

我正在使用 JUnit 和 Cobertura 进行代码覆盖。 Junit 仅用于 DAO 测试。

当我运行 build 时,它会编译所有内容,在我的 JUnit 运行之前,我正在调用 cobertura.instrument,它调用 cobertura-instrument。

我收到以下错误

[cobertura-instrument] The jvmargs attribute is deprecated. Please use nested jvmarg elements.
[cobertura-instrument] java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.6.0_24\jre\bin\java.exe": CreateProcess error=87, The parameter is incorrect
[cobertura-instrument]  at org.apache.tools.ant.taskdefs.Java.fork(Java.java:798)
[cobertura-instrument]  at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:214)
[cobertura-instrument]  at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135)
[cobertura-instrument]  at net.sourceforge.cobertura.ant.InstrumentTask.execute(InstrumentTask.java:199)
[cobertura-instrument]  at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[cobertura-instrument]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[cobertura-instrument]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[cobertura-instrument]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[cobertura-instrument]  at java.lang.reflect.Method.invoke(Method.java:597)

我google了一下,发现是这样的

CreateProcess 函数的最大命令行长度为 32767 个字符。这个限制来自于 UNICODE_STRING 结构

cobertura-instrument 的我的 Ant 代码

<target name="coverage.instrument" depends="coverage.init,ztest.copy">
<delete file="${basedir}/cobertura.ser"/>
<cobertura-instrument todir="${coverage.instrument.dir}" maxmemory="1024M" datafile="${basedir}/cobertura.ser">
<fileset dir="${model.output.dir}">
<include name="**/*.class"/>
</fileset>
</cobertura-instrument>
</target>

我看不出有什么办法可以解决这个问题。

有人帮我解决这个问题吗?

【问题讨论】:

  • 请运行带有调试 (-d) 标志的 ant 以准确查看向 java 提供的内容。

标签: ant build cobertura


【解决方案1】:

作为指定每个类文件的替代方法,这将是 的结果,请尝试使用 ,如下所述:http://cobertura.sourceforge.net/anttaskreference.html。这将大大减少命令行长度。

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多