E/ddms IllegalArgumentException «Плохая версия» с установленной 32- и 64-разрядной Java JRE

E/ddms IllegalArgumentException «Плохая версия» с установленной 32- и 64-разрядной Java JRE

Привет. Работа в 64-разрядной системе Windows 7 Pro с установленным 64-разрядным Java JDK (и через JDK — JRE), а также с использованием Eclipse 3.5.2 и последней версии Android SDK (версия 7). Все работает нормально.

Если я затем установлю 32-разрядную Java JRE на том же компьютере (чтобы я мог запускать апплеты Java в Chrome/Firefox) и попытаюсь запустить эмулятор (либо из командной строки, либо из Eclipse), я получу следующее исключение...

E/ddms: shutting down due to uncaught exception
E/ddms: java.lang.IllegalArgumentException: Bad version: standalone
     at com.android.sdkstats.SdkStatsService.normalizeVersion(SdkStatsService.java:467)
     at com.android.sdkstats.SdkStatsService.doPing(SdkStatsService.java:195)
     at com.android.sdkstats.SdkStatsService.ping(SdkStatsService.java:130)
     ...

Что конкретно происходит, когда я пытаюсь запустить эмулятор, я получаю окно командной строки Windows с заголовком «Java -версия», которое быстро исчезает, а затем другое окно командной строки Windows с заголовком «C:\Windows». \system32\cmd.exe", который также быстро исчезает, а затем, наконец, третье окно командной строки Windows с вышеупомянутой информацией об исключении и с заголовком ...

"java -Djava.ext.dirs=lib\x86;lib\ -Dcom.android.ddms.binddir= -jar lib\ddms.jar ping emulator standal..."
("..." означает, что окно было недостаточно широким, чтобы показать остальную часть заголовка)

...который также быстро уходит. Все три окна отображаются/исчезают в течение 1-2 секунд.

Удаление/удаление 32-битной Java JRE из моей системы устраняет проблему, повторное введение 32-битной Java JRE заставляет ее вернуться.

На данный момент у меня просто не установлена ​​32-разрядная версия Java JRE, и если мне нужно получить доступ к веб-странице с помощью апплета Java, я использую 64-разрядную версию IE. (в котором работает 64-разрядная версия Java), но я хотел бы иметь гармонию между моей 64-разрядной средой разработки Android/Eclipse и моей потребностью запускать 32-разрядную версию Java JRE, чтобы я мог использовать апплеты в Хроме/Файрфоксе.

Любые советы/информация будут оценены. Заранее спасибо за ваше время и усилия.

P.S. Вот составной скриншот трех окон командной строки Windows, которые я описал ранее: http://img409.imageshack.us/img409/3182/tempb.png


person Adrian Romanelli    schedule 13.10.2010    source источник


Ответы (5)


У меня была именно эта проблема. В моем случае я использую Windows 7 32bit. Я нашел решение:

Измените ddms.bat в папке C:\android-sdk-windows\tools. Последняя строка из

вызов %java_exe% %java_debug% -Djava.ext.dirs=%javaextdirs% -Dcom.android.ddms.bindir= -jar %jarpath% %*

to:

call %java_exe% %java_debug% -Djava.ext.dirs=%javaextdirs% -Dcom.android.ddms.bindir= -jar %jarpath% эмулятор ping 0012

Меня устраивает.

Ссылка: http://ichavo.ru/voprosy/10-11-15/illegalargumentexception-bad-version-standalone

person Sam    schedule 22.11.2010

У меня была такая же проблема, и я смог ее решить. Моя ситуация такова, что у меня было две установленных JRE и одна JDK. В документации по Android сказано, что вам нужен полный JDK, поэтому я решил удалить две JRE. После того, как я это сделал, все по-прежнему не работало (хотя и с другой ошибкой), а затем я обнаружил, что могло быть основной причиной моей проблемы.

Короче говоря, когда что-то не работало, у меня была такая ситуация. Мое системное свойство JAVA_HOME указывало на JDK, а мое системное свойство PATH указывало на папку bin одной из JRE.

Ошибка, которую я получил после того, как удалил свои JRE, заключалась в том, что Eclipse (3.5.1, 32-разрядная версия) вообще не запускалась, говоря, что не может найти исполняемый файл Java (или что-то в этом роде). Поэтому я исправил PATH, чтобы он указывал на папку bin JDK. После внесения этого изменения все теперь работает нормально, и я могу тестировать свои программы для Android.

Так что я доволен конечным результатом, но вот странная часть всего этого. Моя система 64-битная и работает под управлением Windows Vista. Я вообще не могу заставить работать 64-битную версию Eclipse 3.5.1 - я использую 32-битную версию. Я не помню, является ли мой JDK 32-битным или 64-битным, но, вероятно, 64-битным (так как это похоже на то, что я бы выбрал в то время).

И вот последняя загадка, которую я не понимаю - я все еще получаю то же сообщение об исключении в третьем окне командной строки Windows, которое появляется, когда я тестирую свое приложение (E/ddms: завершение работы из-за неперехваченного исключения...)

Надеюсь, это поможет.

person Dan Dowma    schedule 04.12.2010

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

1. Запустите приложение Android (щелкните правой кнопкой мыши проект >>Запуск от имени >>> Приложение Android), оно запустит ваш эмулятор, а затем запустит эмулятор.

2. Затем проверьте, установлена ​​ли переменная PATH в переменных среды для каталога Android SDK Tools.

3. Затем перейдите в командную строку и введите команду «ddms», чтобы запустить монитор отладки Dalvik.

4. Затем снова запустите приложение, как описано в шаге 1.

Затем посмотрите на экран эмулятора, чтобы увидеть требуемый результат.

person Abhijit Remaniche    schedule 27.12.2010

У меня точно такая же проблема. Но я не мог заставить его работать ни с установкой только 32-битной jre, ни только с 64-битной jre. У меня никогда не устанавливались обе версии одновременно. К счастью, я нашел это: http://www.lightsoft.se/?p=527.

Введите эти команды в командную строку после запуска эмулятора (и оставьте его работающим):

adb kill-server
adb logcat-c
person Svedin    schedule 08.11.2010
comment
Спасибо, что поделились этим, это отличная ссылка, но я не понимаю, как это связано с моим первоначальным вопросом о несовместимости 32/64 java jre/jdk? - person Adrian Romanelli; 09.11.2010

Это ОЧЕНЬ грубый метод исправления, но мне он сработал.

Я столкнулся с этой же ошибкой.

Из комментариев выше выяснилось, что это происходит из-за какого-то конфликта между различными версиями JRE. Я просто искал java.exe на всей своей машине и удалял все каталоги, содержащие Java.

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

Я думаю, что удаление всех этих каталогов из переменной PATH также могло бы сработать.

амол

person Amol    schedule 27.12.2010