运行uiautomatorviewer报错:无法创建Java虚拟机,疑与Java版本有关
解决uiautomatorviewer在Java 10下启动失败的问题
你猜的没错,这个问题完全是Java版本导致的。从Java 9开始,-Djava.ext.dirs参数就被弃用了,而uiautomatorviewer的默认启动脚本还在使用这个过时的参数,所以才会抛出"无法创建Java虚拟机"的致命错误。
下面给你两个可行的解决办法:
方法一:修改uiautomatorviewer启动脚本
这是最直接的修复方式,不需要更换Java版本:
- 找到你的Android SDK路径下的启动脚本:
/Users/<Username>/Library/Android/sdk/tools/bin/uiautomatorviewer - 用文本编辑器打开这个脚本,找到包含
-Djava.ext.dirs的那一行(大概是脚本里的exec命令行) - 把原来的
-Djava.ext.dirs=/xxx/xxx:/xxx/xxx替换成-classpath "/xxx/xxx:/xxx/xxx"——也就是把参数从-Djava.ext.dirs改成-classpath,同时保留原来的两个路径(用冒号分隔) - 确保修改后的命令行最后跟上主类:
com.android.uiautomator.UiAutomatorViewer
举个修改后的完整例子:exec "$java_exe" -classpath "/Users/<Username>/Library/Android/sdk/tools/lib/x86_64:/Users/<Username>/Library/Android/sdk/tools/lib" com.android.uiautomator.UiAutomatorViewer "$@" - 保存脚本后,重新在终端运行
uiautomatorviewer,应该就能正常启动了。
方法二:降级Java版本到8
如果不想修改脚本,最简单的方式就是切换到Java 8运行uiautomatorviewer:
- 安装Java 8 JDK(Oracle或OpenJDK都可以)
- 用工具(比如
jenv)或者直接修改环境变量JAVA_HOME,把Java 8设为当前使用的版本 - 验证版本:运行
java -version确认显示的是Java 8 - 再启动
uiautomatorviewer,就不会有参数兼容问题了
内容的提问来源于stack exchange,提问作者Praveen Singh
相关产品推荐
相关产品推荐

