首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ubuntu20.04中运行uiautomatorviewer时出错

在ubuntu20.04中运行uiautomatorviewer时出错
EN

Stack Overflow用户
提问于 2021-04-28 12:45:56
回答 1查看 859关注 0票数 2

执行命令时会显示以下错误:

用户名@设备:~/Android/Sdk/tools/bin$ ./uiautomatorviewer

不支持Djava.ext.dirs=/home/username/Android/Sdk/tools/lib/x86_64:/home/username/Android/Sdk/tools/lib。使用-classpath代替。错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。

然后,我在uiautomatorviewer查看器文件中使用--类路径,并面对此错误:我使用此方法编辑uiautomatorviewer文件:https://www.programmersought.com/article/53371586152/

错误:无法初始化由以下原因引起的主类com.android.uiautomator.uiautomatorviewer : java.lang.noclassdeffounderror: org/eclipse/swt/widget/control:在这里输入图像描述原始:在这里输入图像描述,当我得到上面的错误时,我回到了以前的状态

现在我又有了第一个问题。

$JAVA_HOME => /usr/lib/jvm/java-8-OpenJDK-AMD 64

$ANDROID_HOME => /home/username/Android/Sdk

Android工作室版本: 4.1.3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-28 14:08:55

这是我在评论中要求的输出。

代码语言:javascript
复制
+java -version 
openjdk version "11.0.11" 2021-04-20 
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing) 
+exec java -Xmx1600M -Djava.ext.dirs=/home/alielyasi/Android/Sdk/tools/lib/x86_64:/home/alielyasi/Android/Sdk/tools/lib -Dcom.android.uiautomator.bindir=/home/alielyasi/Android/Sdk/tools -jar /home/alielyasi/Android/Sdk/tools/lib/uiautomatorviewer-26.0.0-dev.jar
-Djava.ext.dirs=/home/alielyasi/Android/Sdk/tools/lib/x86_64:/home/alielyasi/Android/Sdk/tools/lib is not supported.
Use -classpath 

首先,我们可以看到所使用的java命令是,而不是一个特定的(绝对)路径名。

这是可以的,但这意味着$PATH将用于将java解析为Java的actaul路径名。(不是$JAVA_HOME.)

其次,我们可以看到java -version正在告诉我们它正在使用Java11.0.11。正如我在评论中提到的,Java9和更高版本不支持"ext.dirs“机制。

不幸的是,java命令关于使用-classpath的建议是行不通的。

我要给你们两种方法来解决这个问题

解决方案1:只需使用Java 8。

您需要确保已经安装了Java8,并且运行java -version可以打印出版本号为8.0.xxx,其中xxx是最新可用的Java8补丁版本(理想情况下)。

由于您使用的是Ubuntu20.04,所以有两种方法可以确保您使用的是Java 8而不是Java 11。

  • 可以使用“替代”系统使Java 8在全局上成为默认的Java版本。运行man update-alternatives获取文档。(您需要以根用户身份运行update-alternatives .)
  • 通过更改PATH环境变量,可以使Java 8成为当前用户或当前shell的默认设置。

解决方案2:调整脚本,使Java 11能够工作。

如前所述,简单地将-Djava.ext.dirs=...转换为-classpath选项是行不通的。这是因为exec行使用的是-jar选项,而当使用-jar时,-classpath被忽略。但是-jar意味着这是一个“可执行的JAR",入口点类名来自JAR文件的清单。

所以我们得解开这个。

首先,我们需要知道(完整)入口点类名是什么,而且JAR文件正在设置自己的类路径。我们可以通过使用jar命令来提取META-INF/MANIFEST.MF文件并查看它来确定。

接下来,我们需要形成一个类路径,包括

  • $frameworkdir当前给出的路径
  • 主JAR文件的路径(即$jarpath)
  • 清单文件中指定的路径。

路径的顺序可能很重要。

需要通过一个java-cp选项将整个类路径分配给-classpath命令。(不是--class-path.)

最后,删除-jar $jarpath并用完整的入口点类名替换它。(它是一个类名,而不是路径名。不要将点改为斜线,添加后缀或做类似的事情。)使用清单文件给出的名称。)

这种方法应该有效,但我不能测试它。如果失败,请在下面评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67300521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档