Uiautomatorviewer SWT例外

时间:2018-02-10 07:02:42

标签: java windows eclipse swt uiautomatorviewer

由于StackExchange建议我不要求previously existing post的帮助或澄清,我正在制作新的帖子。

在Windows 10x64上,我下载了Eclipse SWT(在“下载”页面的倒数第二部分),将我的ANDROID_SWT环境变量设置为<download location>\swt.jar,并尝试运行{{ 1}}再次来自uiautomatorviewer,只是收到与我尝试使用与eclipse捆绑的SWT时相同的错误消息:

cmd

是否有其他人遇到此错误,如果是,那么根本原因是什么?

提前感谢您的时间和帮助!

3 个答案:

答案 0 :(得分:1)

就我而言,将 ANDROID_SWT 添加到环境变量或编辑 PATH 并不能解决问题。因此,我通过 this 问题的帮助找到了不同的解决方案。

运行 uiautomatorviewer.bat 并输出:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Control
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:650)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:632)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Listener
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

解决方案:

转到:https://www.findjar.com/ 并搜索缺少的类。 在这种情况下搜索类:

org.eclipse.swt.widgets.Control

对于你的情况是:

org.eclipse.swt.widgets.Listener

错误中类的名称可以更改,但所需的所有类都来自将要下载的 .jar 文件。

在结果中点击:

[CLASS] org.eclipse.swt.widgets.Control

或者对于您的情况:

[CLASS] org.eclipse.swt.widgets.Listener

为您的操作系统下载最新且合适的文件。 This 是最新的,目前适用于 Windowsx86_64。

将下载的.jar文件放入:

<块引用>

C:\Users\{userId}\AppData\Local\Android\Sdk\tools\lib

或您操作系统的等效路径。

现在 uiautomatorviewer.bat 应该可以正常运行了。

答案 1 :(得分:0)

准确地关注these instructions。我错误地尝试下载Eclipse SWT以解决我遇到的其他问题;在CLASSPATHANDROID_SWT环境变量中设置此不同的SWT版本会导致此异常。

答案 2 :(得分:0)

确保在Android Studio中选择的JDK位置与在环境变量中设置的JDK相同。

enter image description here