【问题标题】:uiautomatorviewer - Error: Could not create the Java Virtual Machineuiautomatorviewer - 错误:无法创建 Java 虚拟机
【发布时间】:2020-05-20 10:51:57
【问题描述】:

我正在尝试在终端中运行 uiautomatorviewer。我收到此错误:

-Djava.ext.dirs=/Users/<Username>/Library/Android/sdk/tools/lib/x86_64:/Users/<Username>/Library/Android/sdk/tools/lib is not supported.  Use -classpath instead.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

我认为这可能与我使用的 java 版本有关。这是java -version的输出:

java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)

我已经看过this question on SO,但它建议降级到java 8。

我在这里遗漏了什么吗?我将不胜感激。

【问题讨论】:

  • 同样的问题,快疯了:D

标签: android uiautomatorviewer


【解决方案1】:

据我所知,uiautomatorviewer 与 java10 不兼容。切换到 java8 为我修复了它。

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题,我在我的 uiautomatorviewer 文件中执行了以下操作。 而不是这一行:

    exec "${javaCmd}" $javaOpts -Djava.ext.dirs="$frameworkdir" -Dcom.android.uiautomator.bindir="$progdir" -jar "$jarpath" "$@"

    我使用 Classpath 替换了相同的内容,它起作用了:

    exec java -Xmx1600M -XstartOnFirstThread -Dcom.android.uiautomator.bindir=/your-sdk-path/tools -cp /your-sdk-path/tools/lib/x86_64/swt.jar:/your -sdk-path/lib/uiautomatorviewer.jar:/your-sdk-path/tools/lib/.jar:。 com.android.uiautomator.UiAutomatorViewer*

    将 your-sdk-path 替换为系统上 sdk 的位置。您也可以直接在终端上尝试此命令,它将启动“UiAutomatorViewer”,而无需对 java 进行任何更改。

    【讨论】:

      【解决方案3】:

      uiautomatorviewer 适用于 Java 8 版。您无需将 Java 版本降级到 1.8。而是将此方法添加到.bash_profile

      uiautomator() {
              export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
              export ANDROID_HOME=/Users/<username>/Library/Android/sdk
              export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools:$ANDROID_HOME/tools
              /Users/<username>/Library/Android/sdk/tools/bin/uiautomatorviewer
      }
      

      这会将 JAVA_HOME 路径设置为 1.8,并包括 android 平台和构建工具到路径变量。

      要么,

      1. 重新启动终端以反映更改或
      2. 在当前终端中通过. .bash_profile 编译您的.bash_profile 以使其反映。

      开始在您的终端中输入uiautomator。它应该工作!

      【讨论】:

      • 很好的解决方案!我安装了多个 java 版本,这对我有用
      • 我很高兴它有帮助:)
      • 如何编辑 .bash_profile 以及该文件在 windows 上的位置?
      • @Adamantus :我只是在您询问并遇到此剪辑(youtube.com/watch?v=RQSkji4WJPc)后才搜索它,请尝试一下..
      【解决方案4】:

      不支持 Djava.ext.dirs=/Users//Library/Android/sdk/tools/lib/x86_64:/Users//Library/Android/sdk/tools/lib。请改用 -classpath。 错误:无法创建 Java 虚拟机。 错误:发生了致命异常。程序将退出。

      以下对我有用(Ubuntu 16.04,Java 11):

      $ export YOUR_SDK_PATH="/home/user/Android/Sdk/"
      
      $ java -Xmx1600M -Dcom.android.uiautomator.bindir="$YOUR_SDK_PATH/tools" -cp "$YOUR_SDK_PATH/tools/lib/x86_64/swt.jar":"$YOUR_SDK_PATH/tools/lib/*" com.android.uiautomator.UiAutomatorViewer
      

      【讨论】:

      • ``` 错误:无法找到或加载主类 com.android.uiautomator.UiAutomatorViewer 原因:java.lang.ClassNotFoundException:com.android.uiautomator.UiAutomatorViewer ```我收到此错误
      【解决方案5】:

      退回 Java 8 为我解决了这个问题。安装 Java 8 后,请确保您的环境变量没有指向您之前安装的 Java。

      【讨论】:

        【解决方案6】:

        右键单击uiautomator.bat文件并单击编辑。(应该打开带有代码的记事本)

        滚动并找到“rem Check we have a valid Java.exe in the path.”

        确保我下面的接下来的两行代码应该是相同的,即进行更改以使其相同。

        设置 java_exe=C:\Program Files\Android\Android Studio\jre\bin\java.exe

        rem 调用 ..\lib\find_java.bat 保存文件并 它会工作

        【讨论】:

          【解决方案7】:

          改用布局检查器。它更好。

          【讨论】:

          • 这太棒了。更快
          【解决方案8】:

          我在 Ubuntu 20.04;从here 下载 java8 压缩存档,解压到某个地方, 然后用gedit之类的文本编辑器打开uiautomatorviewer,然后替换

          javaCmd="java"
          

          javaCmd="<you uncompressed java8 dir location>/bin/java"
          

          那么它可能会起作用。

          【讨论】:

            【解决方案9】:

            我遇到了同样的问题,我尝试了人们建议的所有解决方案,但没有奏效。我找到的唯一解决方案如下:

            1. 安装/降级您的 Java 版本到 8。就我而言,我的 Java 版本是最新的 17。
            2. 使用 (C:\Program Files\Java\jdk1.8.0_311) 更新环境变量中的 JAVA_HOME 值。
            3. 以管理员身份运行命令提示符(cmd)
            4. 写入 (uiautomatorviewer)
            5. 按回车键。在应用解决方案之后,请检查下图以显示& 之前的内容。

            【讨论】:

              【解决方案10】:

              适用于我的 Linux,但不适用于我朋友的 Mac。

              在 ./Android/Sdk/tools/bin/uiautomatorviewer

              我换了

              exec "${javaCmd}" $javaOpts -Djava.ext.dirs="$frameworkdir" \
                -Dcom.android.uiautomator.bindir="$progdir" -jar "$jarpath" "$@"
              

              exec "${javaCmd}" $javaOpts \
                -Dcom.android.uiautomator.bindir="$progdir" \
                -cp $swtpath/swt.jar:$frameworkdir/* com.android.uiautomator.UiAutomatorViewer "$@"
              

              使用 /* CLASSPATH 通配符。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-10-14
                • 2017-05-30
                • 1970-01-01
                • 2018-07-17
                • 2019-08-16
                • 2013-12-07
                • 1970-01-01
                相关资源
                最近更新 更多