26

我正在尝试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)

我已经在 SO 上看到了这个问题,但它建议降级到 java 8。

我在这里错过了什么吗?我将不胜感激任何帮助。

4

10 回答 10

27

uiautomatorviewerJava 版本 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的 by. .bash_profile以使其反映出来。

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

于 2019-02-02T10:53:06.523 回答
14

不支持 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
于 2019-06-02T00:39:57.193 回答
6

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

于 2018-07-12T21:05:44.273 回答
5

右键单击 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 call ..\lib\find_java.bat 保存文件,它会工作

于 2021-03-03T02:49:58.177 回答
2

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

javaCmd="java"

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

然后它可能会起作用。

于 2021-06-04T03:15:04.460 回答
1

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

于 2019-11-20T04:17:30.400 回答
1

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

在此处输入图像描述

于 2021-05-05T19:04:50.187 回答
0

我也遇到了同样的问题,我在我的 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 进行任何更改。

于 2018-08-07T18:27:02.150 回答
0

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

  1. 将您的 Java 版本安装/降级到 8。就我而言,我拥有最新的 Java 版本 17。
  2. 使用 (C:\Program Files\Java\jdk1.8.0_311) 更新环境变量中的 JAVA_HOME 值。
  3. 以管理员身份运行命令提示符(cmd)
  4. 写(uiautomatorviewer)
  5. 点击 ENTER。检查下图以向您展示应用解决方案之前在此处输入图像描述和之后的情况。
于 2021-10-22T17:42:03.783 回答
0

在 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 通配符。

于 2021-12-09T17:55:28.917 回答