【问题标题】:Issue with unrecognized option in ANTANT 中无法识别选项的问题
【发布时间】:2014-07-15 04:02:19
【问题描述】:

我已经使用了大量资源来尝试理解为什么在尝试从命令行运行 ant 时出现以下错误:

Unrecognized option: -dant.home=C:\ANT\1.7.0
Could not create the Java virtual machine.

ERROR: The file is either empty or does not contain the valid choices.

为了提供一点见解,我的路径包括 %JAVA_HOME%,然后是 %ANT_HOME%\bin。 我不能做的一件事是以管理员身份运行以更新系统变量,仅更新用户变量。有没有人遇到过这个?感谢您的帮助!

编辑:对于更新,我取消注释了 ant.bat 顶部的 @echo 并运行 ant.bat 以显示下面出现了哪些无法识别的选项:

C:\ANT\1.7.0\bin>if not "" == "" goto runantwithjikes

C:\ANT\1.7.0\bin>if "no" == "no" goto runantnoclasspath

C:\ANT\1.7.0\bin>"C:\Java\jdk1.6.0_03\bin\java.exe"  -classpath "C:\ANT\1.7.0\li
b\ant-launcher.jar" "-dant.home=C:\ANT\1.7.0" org.apache.tools.ant.launch.launch
er
Unrecognized option: -dant.home=C:\ANT\1.7.0
Could not create the Java virtual machine.

更新: 我认为在做了更多研究之后,它必须与试图解析 launcher.jar 文件的类路径变量有关。如果有人在 Windows 中遇到过这种情况,如果他们知道下一步该做什么,那就太棒了。另外,我没有使用自定义的 ant 库。

更新: 我决定在这个页面中加入一些调试。希望没关系,我在第 130 行之后回显批处理文件的其余部分:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\SysWOW64>ant
DEBUG DEBUG DEBUG Attempting to execute an Ant java process
C:\Windows\SysWOW64>if "no" == "no" goto runantnoclasspath

C:\Windows\SysWOW64>"C:\Program Files (x86)\Java\jdk1.7.0_04\bin\java.exe"  -cla
sspath "C:\ANT\1.7.0\lib\ant-launcher.jar" "-dant.home=C:\ANT\1.7.0" org.apache.
tools.ant.launch.launcher
Unrecognized option: -dant.home=C:\ANT\1.7.0
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

C:\Windows\SysWOW64>rem check the error code of the ant build

C:\Windows\SysWOW64>if not "Windows_NT" == "windows_nt" goto onerror

C:\Windows\SysWOW64>rem windows 9x way of checking the error code.  it matches v
ia brute force.

C:\Windows\SysWOW64>for %i in (1 10 100) do set err%i=

C:\Windows\SysWOW64>set err1=

C:\Windows\SysWOW64>set err10=

C:\Windows\SysWOW64>set err100=

C:\Windows\SysWOW64>for %i in (0 1 2) do if errorlevel %i00 set err100=%i

C:\Windows\SysWOW64>if errorlevel 000 set err100=0

C:\Windows\SysWOW64>if errorlevel 100 set err100=1

C:\Windows\SysWOW64>if errorlevel 200 set err100=2

C:\Windows\SysWOW64>if 0 == 2 goto onerror200

C:\Windows\SysWOW64>if 0 == 0 set err100=

C:\Windows\SysWOW64>for %i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %i0 set err
10=%i

C:\Windows\SysWOW64>if errorlevel 00 set err10=0

C:\Windows\SysWOW64>if errorlevel 10 set err10=1

C:\Windows\SysWOW64>if errorlevel 20 set err10=2

C:\Windows\SysWOW64>if errorlevel 30 set err10=3

C:\Windows\SysWOW64>if errorlevel 40 set err10=4

C:\Windows\SysWOW64>if errorlevel 50 set err10=5

C:\Windows\SysWOW64>if errorlevel 60 set err10=6

C:\Windows\SysWOW64>if errorlevel 70 set err10=7

C:\Windows\SysWOW64>if errorlevel 80 set err10=8

C:\Windows\SysWOW64>if errorlevel 90 set err10=9

C:\Windows\SysWOW64>if "" == "" if 0 == 0 set err10=

C:\Windows\SysWOW64>for %i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %i set err1
=%i

C:\Windows\SysWOW64>if errorlevel 0 set err1=0

C:\Windows\SysWOW64>if errorlevel 1 set err1=1

C:\Windows\SysWOW64>if errorlevel 2 set err1=2

C:\Windows\SysWOW64>if errorlevel 3 set err1=3

C:\Windows\SysWOW64>if errorlevel 4 set err1=4

C:\Windows\SysWOW64>if errorlevel 5 set err1=5

C:\Windows\SysWOW64>if errorlevel 6 set err1=6

C:\Windows\SysWOW64>if errorlevel 7 set err1=7

C:\Windows\SysWOW64>if errorlevel 8 set err1=8

C:\Windows\SysWOW64>if errorlevel 9 set err1=9

C:\Windows\SysWOW64>goto onerrorend

C:\Windows\SysWOW64>set ant_error=1

C:\Windows\SysWOW64>for %i in (1 10 100) do set err%i=

C:\Windows\SysWOW64>set err1=

C:\Windows\SysWOW64>set err10=

C:\Windows\SysWOW64>set err100=

C:\Windows\SysWOW64>rem bug id 32069: resetting an undefined env variable change
s the errorlevel.

C:\Windows\SysWOW64>if not "C:\Program Files (x86)\Java\jdk1.7.0_04\bin\java.exe
" == "" set _javacmd=

C:\Windows\SysWOW64>if not "" == "" set ant_cmd_line_args=

C:\Windows\SysWOW64>if "1" == "0" goto mainend

C:\Windows\SysWOW64>rem set the return code if we are not in nt.  we can only se
t

C:\Windows\SysWOW64>rem a value of 1, but it's better than nothing.

C:\Windows\SysWOW64>if not "Windows_NT" == "windows_nt" echo 1   1>nul  | choice
 /n /c:1

ERROR: The file is either empty or does not contain the valid choices.

C:\Windows\SysWOW64>rem set the errorlevel if we are running nt.

C:\Windows\SysWOW64>if "Windows_NT" == "windows_nt" color 00

C:\Windows\SysWOW64>goto omega
C:\Windows\SysWOW64>

我特别关心的是这部分:

C:\Windows\SysWOW64>"C:\Program Files (x86)\Java\jdk1.7.0_04\bin\java.exe"  -cla
sspath "C:\ANT\1.7.0\lib\ant-launcher.jar" "-dant.home=C:\ANT\1.7.0" org.apache.
tools.ant.launch.launcher

我在 apache 手册上读到您不应该更改类路径,所以我不理会它。

【问题讨论】:

  • 请给我更多信息。您是否尝试包含自定义 ant 库?
  • 您好,感谢您的检查,我没有包含自定义 ant 库。我已经完成了常规安装。

标签: java windows ant


【解决方案1】:

-d 开关打开调试(它是-debug 的同义词)。

看起来你想要-D 开关,它定义了一个属性的值,即,

-Dant.home=C:\ANT\1.7.0

您可以通过键入以下命令查看所有命令行选项:

ant -help

【讨论】:

  • 感谢您提供的信息,奇怪的是,当我输入命令行 ant -help 时,它仍然会重现相同的无法识别的选项。我不确定为什么 -D 仍然出现。
猜你喜欢
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 2014-08-21
相关资源
最近更新 更多