2

由于 StackExchange 建议我不要对以前存在的帖子寻求帮助或澄清,我正在创建一个新线程。

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

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Listener
    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:544)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Listener
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more

有没有其他人遇到过这个错误,如果有,根本原因是什么?

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

4

3 回答 3

2

在我的情况下,将 ANDROID_SWT 添加到环境变量或编辑 PATH 并不能解决问题。因此,我通过这个问题的帮助找到了不同的解决方案。

运行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

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

将下载的.jar文件放入:

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

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

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

于 2021-07-29T09:05:42.593 回答
0

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

在此处输入图像描述

于 2020-05-06T18:11:34.440 回答
-1

请严格遵循这些说明。我错误地尝试下载 Eclipse SWT 以解决我遇到的其他问题;CLASSPATH在和环境变量中设置这个不同的 SWT 版本ANDROID_SWT导致了这个异常。

于 2018-02-10T08:36:30.700 回答