2012-02-12 22 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に戻すと、すべて正常に戻ります。何が起こっている?ありがとう。それは私が同じ問題を抱えていたし、私の友人は、華麗なsollution

コピーcmd.exeのを発見し、コマンドとしてコピーの名前を変更する16ビットアプリケーションであるため、

+1

Maven 1.0.2? 2004年? –

+0

はい、プロジェクトで古い[AndroMDA](http://www.andromda.org/docs/index.html)プラグインを使用しているため、このバージョンではまだあります。 –

+0

なぜこのようなことが起こるのか分かりませんが、Java 1.5では1.6よりも別のOS名が返されてANTに間違ったコマンドラインが作成されているようですが、正直言ってこの設定はデバッグ価値があります(EOL Java、古代Maven、古いプラグインバージョン)?レガシープロジェクトの場合は、何も変更しないでください。アクティブなプロジェクトの場合は、すべてを更新します。 –

答えて

5

のWindows 7のx64はcommand.comを持っていません。 com、パスに入れて

問題を解決しました!