2012-02-12 112 views
2

我正在使用Maven 1.0.2和JDK 1.5一段時間沒有任何問題。我決定遷移到JDK 1.6,所以我更改了JAVA_HOME環境變量(在Windows 7系統上),現在當嘗試使用maven(例如,在cmd中使用maven install命令)時收到奇怪的錯誤消息。Maven 1.0.2和JDK 1.6問題

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。我不知道爲什麼只有當我指向JDK 1.6時,maven纔會搜索它。如果我將JAVA_HOME指向JDK 1.5,則一切恢復正常。發生什麼事?謝謝。

+1

Maven 1.0.2?從... 2004年? – 2012-02-12 14:51:22

+0

是的,仍然在這個版本,因爲我在一個項目中使用了一箇舊的[AndroMDA](http://www.andromda.org/docs/index.html)插件。 – 2012-02-12 14:58:21

+0

我不知道爲什麼會發生這種情況,我猜Java 1.5會返回一個不同於1.6的操作系統名稱,導致ANT生成錯誤的命令行,但老實說:這個設置是否值得調試(EOL Java,古代Maven,舊插件版本)?如果它是一個傳統項目,不要改變任何東西。如果它是一個活動項目,則更新所有內容。 – 2012-02-12 16:15:37

回答

5

的Windows 7 64位沒有command.com,因爲它是一個16位應用程序,我有同樣的問題,和我的一個朋友發現了一個輝煌的sollution

副本的cmd.exe和副本命令重命名。 com,把它放在路徑上

問題解決了!