Я работаю с Maven 1.0.2 и JDK 1.5 в течение некоторого времени без каких-либо проблем. Я решил перейти на JDK 1.6, поэтому я изменил переменную среды JAVA_HOME (в системе Windows 7), и теперь я получаю странное сообщение об ошибке при попытке использовать maven (например, команда maven install в cmd).Maven 1.0.2 и JDK 1.6 issue
java.io.IOException: Cannot run program "command.com": CreateProcess error=2, the
system could not find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Exec
ute.java:646)
at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:416)
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:427)
at org.apache.tools.ant.taskdefs.Execute.getProcEnvironment(Execute.java
:180)
at org.apache.tools.ant.taskdefs.Property.loadEnvironment(Property.java:
455)
at org.apache.tools.ant.taskdefs.Property.execute(Property.java:359)
at org.apache.tools.ant.Task.perform(Task.java:341)
at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:185)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
at org.apache.maven.plugin.PluginManager.runScript(PluginManager.java:11
43)
at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:
647)
at org.apache.maven.MavenSession.attainGoals(MavenSession.java:263)
at org.apache.maven.cli.App.doMain(App.java:488)
at org.apache.maven.cli.App.main(App.java:1239)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.werken.forehead.Forehead.run(Forehead.java:551)
at com.werken.forehead.Forehead.main(Forehead.java:581)
Caused by: java.io.IOException: CreateProcess error=2, O sistema nÒo pode encont
rar o arquivo especificado
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
В Windows 7 отсутствует файл command.com, вместо этого это cmd.exe. Я не знаю, почему maven ищет его только тогда, когда я указываю JDK 1.6. Если я укажу JAVA_HOME на JDK 1.5, все вернется в норму. Что происходит? Благодарю.
Maven 1.0.2? От ... 2004? –
Да, все еще в этой версии, потому что я использую старый [AndroMDA] (http://www.andromda.org/docs/index.html) плагин в проекте. –
Я не знаю, почему это происходит, я полагаю, что Java 1.5 возвращает другое имя ОС, чем 1,6, что приводит к тому, что ANT создает неправильную командную строку, но, честно говоря: эта настройка стоит отладки (EOL Java, старая версия Maven, старый плагин)? Если это устаревший проект, ничего не меняйте. Если это активный проект, обновите все. –