2010-04-06 47 views
0

我在Windows XP机器上安装ant,并按照Apache's manual site的说明操作。它说设置JAVA_HOME,所以我查了一下,看到没有名为JAVA_HOME的环境变量,发一个,并将其设置为“C:\ Program Files \ Java \ jdk1.6.0_19”安装蚂蚁;明显误解JAVA_HOME

当我尝试运行ant调试,但是,它告诉我,JAVA_HOME目前设置为“C:\ Program Files \ Java \ jre6”

我猜JAVA_HOME不是一个环境变量。但如果它不是一个,我就不知道从哪里开始寻找它。有人知道吗?

编辑:哦,是的 - 它也是buging我tools.jar以及,但我猜,当我修复JAVA_HOME问题,这将有助于终端找到tools.jar。或者,也许我错了。谢谢

+0

是,一旦你的JAVA_HOME是正确的,在JDK点,它会找到的tools.jar。 – 2010-04-06 01:25:12

+1

我发现调试这个问题难以容忍,所以简单的把tools.jar放在Ant期望找到的地方。有时投降是最好的政策。 – 2010-04-06 01:59:42

+0

你知道吗?我早些时候正在考虑同样的事情,但我害怕在工作电脑上试用它。感谢您的建议。现在工作正常。 – StormShadow 2010-04-06 02:39:05

回答

5

继Newtopian的建议,您可以快速确认,如果该行为是在终端

C:\>set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_19 
C:\>ant debug 

同时运行的问题,我不知道,如果你输入的文本到JAVA_HOME环境变量的字面意思是“C:\ Program Files \ Java \ jdk1.6.0_19”,即带引号,但如果是这样,你应该删除引号,因为它们会抛出ant.bat。

下面是ant.bat

:checkJava 
set _JAVACMD=%JAVACMD% 

if "%JAVA_HOME%" == "" goto noJavaHome 
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome 
if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe 
goto checkJikes 

:noJavaHome 
if "%_JAVACMD%" == "" set _JAVACMD=java.exe 

... omitted ... 

"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% 

相关位。如果没有帮助,您可以发布您的调试任务?


两个选项,使其永久化:

  1. 运行以下命令:

    C:\>REG delete HKCU\Environment /V JAVA_HOME 
    C:\>REG delete HKLM\Environment /V JAVA_HOME 
    C:\>REG add HKCU\Environment /V JAVA_HOME /d "C:\Program Files\Java\jdk1.6.0_19"

(基本上,确保你只有一个JAVA_HOME设置,它是正确的,可以肯定的在这样做后关闭并重新打开终端)

  1. 如果一切都失败了,蹩脚的批处理文件的解决方案:

    @echo off 
    set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_19 
    ant %*

保存为ant_wrapper.bat(或其他),你应该能够做到ant_wrapper debug

(这两种解决方案是未经测试)

+0

这个伎俩! 虽然我不确定如何使设置“棒”。每次打开新的终端窗口时,我都必须重置它。 噢,还有其他人这样做的一个快速提示:如果在所有其他方面看起来不错的时候出现BUILD FAILED,请检查并确保在运行ant install时模拟器不会睡着或变暗。我花了十分钟才弄明白。 :-) – StormShadow 2010-04-06 02:08:11

+0

@stormshadow看到我的编辑如上 – ig0774 2010-04-06 02:20:36

+1

哦,如果你作为非管理员用户运行,你可能不得不跳过REG删除HKLM行,批处理文件可能是唯一的解决方案。 – ig0774 2010-04-06 02:24:54

3

确保您检查用户和系统范围环境变量。我不确定这里的优先级是什么,但最有可能的是你只检查一个,并在那里创建它,而另一个则被它覆盖。

另外,当您创建环境变量时,请确保您打开新的命令行界面以使更改生效。然后尝试“设置”,该列表将列出刚刚创建的命令提示符在环境中看到的所有环境变量。

如果一切都很好,但Ant仍然看不到正确的,那么检查启动ANT的批处理文件,如果javahome没有设置。如果确定它使用环境变量并且不尝试并再次设置它。

希望这有助于

+0

是的,跑了一阵,果然它给了我JAVA_HOME的错误值。不幸的是,我不是这台机器的管理员,所以我不知道。我想我必须每次或通过命令行设置它。 – StormShadow 2010-04-06 02:11:27