执行命令时会显示以下错误:
用户名@设备:~/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
发布于 2021-04-28 14:08:55
这是我在评论中要求的输出。
+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。
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当前给出的路径$jarpath)路径的顺序可能很重要。
需要通过一个java或-cp选项将整个类路径分配给-classpath命令。(不是--class-path.)
最后,删除-jar $jarpath并用完整的入口点类名替换它。(它是一个类名,而不是路径名。不要将点改为斜线,添加后缀或做类似的事情。)使用清单文件给出的名称。)
这种方法应该有效,但我不能测试它。如果失败,请在下面评论。
https://stackoverflow.com/questions/67300521
复制相似问题