Невозможно запустить программу "C: \ Program Files \ Java \ jdk1.6.0_24 \ jre \ bin \ java.exe": ошибка CreateProcess = 87, параметр неверный - PullRequest
0 голосов
/ 14 сентября 2011

Я пытаюсь создать веб-приложение, используя Ant.

Я использую 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)

Я гуглил и обнаружил, что там написано

Максимальная длина командной строки для функции CreateProcess составляет 32767 символов. Это ограничение исходит из структуры UNICODE_STRING

Мой код Ant для инструмента cobertura

<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>

Я не вижу, как я могу это решить.

Кто-нибудь мне поможет в этом вопросе?

1 Ответ

0 голосов
/ 14 сентября 2011

В качестве альтернативы указанию каждого файла класса, который будет результатом , попробуйте использовать , как описано здесь: http://cobertura.sourceforge.net/anttaskreference.html. Это значительно уменьшит длину командной строки.1005 *

...