【问题标题】:E/ddms IllegalArgumentException 'Bad version' with both 32 and 64 bit Java JRE installed安装了 32 位和 64 位 Java JRE 的 E/ddms IllegalArgumentException 'Bad version'
【发布时间】:2011-04-24 16:32:22
【问题描述】:

E/ddms IllegalArgumentException 'Bad version' 同时安装了 32 位和 64 位 Java JRE

你好。在 Windows 7 Pro 64 位系统上工作,该系统安装了 64 位 Java JDK(并通过 JDK JRE),并使用 Eclipse 3.5.2 和最新的 Android SDK(rev 7)。一切正常。

如果我随后在同一台机器上安装 32 位 Java JRE(以便我可以在 Chrome/Firefox 中运行 Java 小程序),并尝试启动模拟器(从命令提示符或从 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)
     ...

当我尝试启动模拟器时,具体会发生什么,我得到一个标题为“Java -version”的 Windows 命令提示符窗口,该窗口很快消失,然后是另一个标题为“C”的 Windows 命令提示符窗口:\Windows\system32\cmd.exe”,也很快就消失了,最后是第三个Windows命令提示窗口,里面有上述异常信息,标题为...

“java -Djava.ext.dirs=lib\x86;lib\ -Dcom.android.ddms.binddir= -jar lib\ddms.jar ping 模拟器标准...”
('...' 是因为窗口不够宽,无法显示标题的其余部分)

... 这也很快消失了。所有三个窗口都会在 1-2 秒的时间内显示/消失。

从我的系统中卸载/删除 32 位 Java JRE 会使问题消失,重新引入 Java 32 位 JRE 会导致问题再次出现。

目前我只是没有安装 32 位 Java JRE,如果我需要使用 Java 小程序访问网页,我会使用 64 位版本的 I.E。 (Java 64 位适用),但我希望能够在我的 Android/Eclipse 64 位开发环境和运行 32 位 Java JRE 之间保持和谐,以便我可以使用小程序在 Chrome/Firefox 中。

任何建议/信息将不胜感激。提前感谢您的时间和努力。

附:这是我之前描述的三个 Windows 命令提示符窗口的合成屏幕截图:http://img409.imageshack.us/img409/3182/tempb.png

【问题讨论】:

    标签: java android android-emulator


    【解决方案1】:

    为了修复错误,我做了以下任务:

    1.运行Android应用程序(右键单击项目>>Run As >>> Android Application)它将启动你的模拟器然后让模拟器运行。

    2.然后检查环境变量中的PATH变量是否设置为Android SDK Tools目录。

    3.然后转到命令提示符下输入命令“ddms”以启动 Dalvik 调试监视器。

    4.然后按照步骤 1 中的说明再次运行应用程序。

    然后查看模拟器屏幕以查看所需的结果。

    【讨论】:

      【解决方案2】:

      这是一种非常粗略的修复方法,但对我有用。

      我遇到了同样的错误。

      从上面的 cmets 看来,这是由于各种 JRE 版本之间的某种冲突而发生的。我只是在我的整个机器上搜索了 java.exe 并删除了所有包含 Java 的目录。

      我知道这很粗糙,但对我有用,因为我没有使用任何这些程序。

      我想从 PATH 变量中删除所有这些目录也可以正常工作

      阿莫尔

      【讨论】:

        【解决方案3】:

        我有同样的问题,我能够解决它。我的情况是我安装了两个 JRE 和一个 JDK。 Android 文档说您需要完整的 JDK,所以我决定卸载这两个 JRE。在我这样做之后,事情仍然无法正常工作(尽管出现了不同的错误),然后我发现了可能是我的问题的根本原因。

        简而言之,当事情不正常时,我遇到了这种情况。我的 JAVA_HOME 系统属性指向 JDK,而我的 PATH 系统属性指向其中一个 JRE 的 bin 文件夹。

        我卸载 JRE 后遇到的错误是 Eclipse(3.5.1,32 位)根本无法启动,说它找不到 Java 可执行文件(或类似的东西)。所以我修复了 PATH 以指向 JDK 的 bin 文件夹。进行此更改后,现在一切正常,我可以测试我的 Android 程序。

        所以我对最终结果很满意,但这是所有这一切的奇怪部分。我的系统是 64 位的,运行 Windows Vista。我根本无法让 Eclipse 3.5.1 64 位版本工作 - 我正在运行 32 位版本。我不记得我的 JDK 是 32 位还是 64 位,但可能是 64 位(因为这似乎是我当时会选择的)。

        这是我不明白的最后一个谜团 - 在我测试我的应用程序时弹出的第三个 Windows 命令提示符窗口中仍然收到相同的异常消息(E/ddms:由于未捕获的异常而关闭。 ..)

        我希望这会有所帮助。

        【讨论】:

          【解决方案4】:

          我遇到了这个问题。就我而言,我正在运行 Windows 7 32 位。我找到了解决方案:

          修改 C:\android-sdk-windows\tools 文件夹中的 ddms.bat。最后一行来自

          调用 %java_exe% %java_debug% -Djava.ext.dirs=%javaextdirs% -Dcom.android.ddms.bindir= -jar %jarpath% %*

          到:

          调用 %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

          【讨论】:

            【解决方案5】:

            我也有同样的问题。但是我无法让它与仅安装 32 位 jre 或仅安装 64 位 jre 一起使用。我从来没有同时安装两个版本。幸运的是我发现了这个:http://www.lightsoft.se/?p=527.

            在启动模拟器(并让它运行)后,在命令提示符中输入这些命令:

            adb kill-server
            adb logcat-c
            

            【讨论】:

            • 感谢您分享这个,这是一个很好的链接,但我不明白这与我最初提出的 32/64 java jre/jdk 不兼容问题有何关系?
            猜你喜欢
            • 1970-01-01
            • 2010-10-22
            • 2018-03-04
            • 1970-01-01
            • 2013-06-21
            • 2020-05-28
            • 1970-01-01
            • 2017-08-26
            相关资源
            最近更新 更多