Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在ubuntu 20.04中运行uiautomatorviewer时出错_Java_Android_Android Studio_Uiautomatorviewer - Fatal编程技术网

Java 在ubuntu 20.04中运行uiautomatorviewer时出错

Java 在ubuntu 20.04中运行uiautomatorviewer时出错,java,android,android-studio,uiautomatorviewer,Java,Android,Android Studio,Uiautomatorviewer,执行命令时显示以下错误: username@device:~/Android/Sdk/tools/bin$。/uiautomatorviewer Djava.ext.dirs=/home/username/Android/Sdk/tools/lib/x86\u 64:/home/username/Android/Sdk/tools/lib不受支持。改用-classpath。 错误:无法创建Java虚拟机。 错误:发生致命异常。程序将退出 然后我在uiautomatorviewer文件中使用--

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

username@device:~/Android/Sdk/tools/bin$。/uiautomatorviewer

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


然后我在uiautomatorviewer文件中使用--class path,并遇到以下错误: 我使用此方法编辑uiautomatorviewer文件:

错误:无法初始化主类com.android.uiautomator.uiautomatorviewer,原因是:java.lang.noclassdeffounderror:org/eclipse/swt/widgets/control 我的变化: 原件: 当我得到上面的错误时,我回到了以前的状态

现在我又有了第一个问题。 外部信息: $JAVA_HOME=>/usr/lib/jvm/JAVA-8-openjdk-amd64

$ANDROID_HOME=>/HOME/username/ANDROID/Sdk


Android studio版本:4.1.3

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

+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命令是
Java
,而不是特定(绝对)路径名

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

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

不幸的是,
java
命令关于使用
-classpath
的建议不起作用(按原样)

所以我将给你们两种方法来解决这个问题:

解决方案1:只需使用Java8。 您需要确保已安装Java 8,并且运行
Java-version
打印出版本号为
8.0.xxx
,其中
xxx
是(理想情况下)最新可用的Java 8修补程序版本

由于您使用的是Ubuntu 20.04,有两种方法可以确保您使用的是Java8而不是Java11

  • 您可以使用“备选方案”系统使Java8成为全局默认Java版本。运行文档的
    manupdatealternatives
    。(您需要以root用户身份运行
    更新备选方案

  • 通过更改
    PATH
    环境变量,可以将Java 8设置为当前用户或当前shell的默认值

解决方案#2:调整脚本,使Java11能够工作。 正如我上面所说,简单地将
-Djava.ext.dirs=…
转换为
-classpath
选项是行不通的。这是因为
exec
行正在使用
-jar
选项,当使用
-jar
时,将忽略
-classpath
。但是
-jar
意味着这是一个“可执行jar”,入口点类名来自jar文件的清单

所以我们需要解开这个

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

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

  • 当前由
    $frameworkdir
  • 主JAR文件的路径(即,
    $jarpath
  • 清单文件中指定的路径
路径的顺序可能很重要

整个类路径需要通过
-classpath
-cp
选项提供给
java
命令。(非
——类路径

最后删除
-jar$jarpath
,并用完整的入口点类名替换它。(它是一个类名,而不是路径名。不要将点更改为斜杠、添加后缀或执行类似操作。严格按照清单文件给出的名称使用名称。)


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

您的问题不清楚。如果使用了
--class path
,Java命令将无法识别它。如果您像错误消息所说的那样使用了
-classpath
。。。请准确地向我们展示您将
uiautomatorviewer
脚本更改为什么。请注意,
ext.dirs
机制直到Java 9才被删除,因此您是否真的使用Java 8来运行该程序值得怀疑。@StephenC Hi,谢谢您的时间。你的第二个评论是:我两个都用了,但都不起作用。我的主要问题是:Djava.ext.dirs=/home/username/Android/Sdk/tools/lib/x86_64:/home/username/Android/Sdk/tools/lib不受支持。改用-classpath。错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。我根据这个链接更改了文件:我能做些什么来解决这个问题呢?解决方案是要么真正使用Java 8,要么使用
-classpath
。。。正确地除非你提供我要求的信息,否则我无法进一步帮助你。请按问题提供信息。不是评论。你还没有按照我的要求做。请向我显示您对
uiautomatorviewer
脚本所做的更改。(我不想看到您认为您遵循的说明。我想看到实际的更改。)