#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 все еще всплывает.