Проблема с нераспознанной опцией в ANT

#java #windows #ant

#java #Windows #ant

Вопрос:

Я использовал довольно много ресурсов, чтобы попытаться понять, почему я получаю следующую ошибку при попытке запустить ant из командной строки:

 Unrecognized option: -dant.home=C:ANT1.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 .
Одна из вещей, которую я не могу сделать, — это запустить от имени администратора для обновления системных переменных, только пользовательских переменных. Кто-нибудь сталкивался с этим раньше? Спасибо вам за помощь!

РЕДАКТИРОВАТЬ: Для обновления я откомментировал @echo off в верхней части ant.bat и запустил ant.bat, чтобы показать, какая нераспознанная опция произошла ниже:

 C:ANT1.7.0bin>if not "" == "" goto runantwithjikes

C:ANT1.7.0bin>if "no" == "no" goto runantnoclasspath

C:ANT1.7.0bin>"C:Javajdk1.6.0_03binjava.exe"  -classpath "C:ANT1.7.0li
bant-launcher.jar" "-dant.home=C:ANT1.7.0" org.apache.tools.ant.launch.launch
er
Unrecognized option: -dant.home=C:ANT1.7.0
Could not create the Java virtual machine.
 

Обновить:
Я думаю, что после проведения дополнительных исследований это должно быть связано с переменной classpath, пытающейся разрешить launcher.jar досье. Если кто-нибудь сталкивался с этим в Windows, было бы здорово, если бы у них было представление о том, что делать дальше. Кроме того, я не использую пользовательскую библиотеку ant.

ОБНОВЛЕНИЕ: я решил включить небольшую отладку на эту страницу. Надеюсь, все в порядке, я повторяю остальную часть пакетного файла после строки 130:

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

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

C:WindowsSysWOW64>"C:Program Files (x86)Javajdk1.7.0_04binjava.exe"  -cla
sspath "C:ANT1.7.0libant-launcher.jar" "-dant.home=C:ANT1.7.0" org.apache.
tools.ant.launch.launcher
Unrecognized option: -dant.home=C:ANT1.7.0
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

C:WindowsSysWOW64>rem check the error code of the ant build

C:WindowsSysWOW64>if not "Windows_NT" == "windows_nt" goto onerror

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

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

C:WindowsSysWOW64>set err1=

C:WindowsSysWOW64>set err10=

C:WindowsSysWOW64>set err100=

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

C:WindowsSysWOW64>if errorlevel 000 set err100=0

C:WindowsSysWOW64>if errorlevel 100 set err100=1

C:WindowsSysWOW64>if errorlevel 200 set err100=2

C:WindowsSysWOW64>if 0 == 2 goto onerror200

C:WindowsSysWOW64>if 0 == 0 set err100=

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

C:WindowsSysWOW64>if errorlevel 00 set err10=0

C:WindowsSysWOW64>if errorlevel 10 set err10=1

C:WindowsSysWOW64>if errorlevel 20 set err10=2

C:WindowsSysWOW64>if errorlevel 30 set err10=3

C:WindowsSysWOW64>if errorlevel 40 set err10=4

C:WindowsSysWOW64>if errorlevel 50 set err10=5

C:WindowsSysWOW64>if errorlevel 60 set err10=6

C:WindowsSysWOW64>if errorlevel 70 set err10=7

C:WindowsSysWOW64>if errorlevel 80 set err10=8

C:WindowsSysWOW64>if errorlevel 90 set err10=9

C:WindowsSysWOW64>if "" == "" if 0 == 0 set err10=

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

C:WindowsSysWOW64>if errorlevel 0 set err1=0

C:WindowsSysWOW64>if errorlevel 1 set err1=1

C:WindowsSysWOW64>if errorlevel 2 set err1=2

C:WindowsSysWOW64>if errorlevel 3 set err1=3

C:WindowsSysWOW64>if errorlevel 4 set err1=4

C:WindowsSysWOW64>if errorlevel 5 set err1=5

C:WindowsSysWOW64>if errorlevel 6 set err1=6

C:WindowsSysWOW64>if errorlevel 7 set err1=7

C:WindowsSysWOW64>if errorlevel 8 set err1=8

C:WindowsSysWOW64>if errorlevel 9 set err1=9

C:WindowsSysWOW64>goto onerrorend

C:WindowsSysWOW64>set ant_error=1

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

C:WindowsSysWOW64>set err1=

C:WindowsSysWOW64>set err10=

C:WindowsSysWOW64>set err100=

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

C:WindowsSysWOW64>if not "C:Program Files (x86)Javajdk1.7.0_04binjava.exe
" == "" set _javacmd=

C:WindowsSysWOW64>if not "" == "" set ant_cmd_line_args=

C:WindowsSysWOW64>if "1" == "0" goto mainend

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

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

C:WindowsSysWOW64>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:WindowsSysWOW64>rem set the errorlevel if we are running nt.

C:WindowsSysWOW64>if "Windows_NT" == "windows_nt" color 00

C:WindowsSysWOW64>goto omega
C:WindowsSysWOW64>
 

Особую озабоченность у меня вызывает эта часть:

 C:WindowsSysWOW64>"C:Program Files (x86)Javajdk1.7.0_04binjava.exe"  -cla
sspath "C:ANT1.7.0libant-launcher.jar" "-dant.home=C:ANT1.7.0" org.apache.
tools.ant.launch.launcher
 

Я прочитал в руководстве для apache, что вы не должны изменять путь к классу, поэтому я оставил его в покое.

Комментарии:

1. Пожалуйста, дайте мне больше информации. Вы пытаетесь включить пользовательскую библиотеку ant?

2. Привет, спасибо за проверку, я не включил пользовательскую библиотеку ant. Я выполнил обычную установку.

Ответ №1:

-d Переключатель включает отладку (это синоним -debug ).

Похоже, вам нужен -D переключатель, который определяет значение для свойства, т.е.,

-Dant.home=C:ANT1.7.0

Вы можете просмотреть все параметры командной строки, введя:

ant -help

Комментарии:

1. Спасибо за информацию, как ни странно, когда я набираю в командной строке ant -help, он по-прежнему воспроизводит ту же нераспознанную опцию. Я не уверен, почему -D все еще всплывает.