Uiautomatorviewer SWT异常
Uiautomatorviewer SWT exception
由于 StackExchange 建议我不要在 previously existing post 上寻求帮助或澄清,我正在创建一个新线程。
在 Windows 10x64 上,我下载了 Eclipse SWT(在下载页面的倒数第二部分),将我的 ANDROID_SWT
环境变量设置为 <download location>\swt.jar
,然后再次尝试从 cmd
运行 uiautomatorviewer
,但收到与我尝试使用与 eclipse 捆绑的 SWT 时相同的错误消息:
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
有没有其他人遇到过这个错误,如果有,根本原因是什么?
提前感谢您的宝贵时间和帮助!
准确地遵循these instructions。我错误地尝试下载 Eclipse SWT 以解决我遇到的其他问题;在 CLASSPATH
和 ANDROID_SWT
环境变量中设置这个不同的 SWT 版本导致了这个异常。
确保在 Android studio 中选择的 JDK 位置与在环境变量中设置的 JDK 相同。
在我的例子中,将 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/ 并搜索丢失的 class。
在这种情况下搜索 class :
org.eclipse.swt.widgets.Control
你的情况是:
org.eclipse.swt.widgets.Listener
错误中 classes 的名称可以更改,但所需的所有 classes 都来自将要下载的 .jar 文件。
在结果中点击:
[CLASS] org.eclipse.swt.widgets.Control
或针对您的情况:
[CLASS] org.eclipse.swt.widgets.Listener
下载适合您 OS 的最新文件。 This 是最新的,目前适合 Windowsx86_64。
将下载的.jar文件放入:
C:\Users\{userId}\AppData\Local\Android\Sdk\tools\lib
或 OS 的等效路径。
现在uiautomatorviewer.bat应该运行没有任何问题。
由于 StackExchange 建议我不要在 previously existing post 上寻求帮助或澄清,我正在创建一个新线程。
在 Windows 10x64 上,我下载了 Eclipse SWT(在下载页面的倒数第二部分),将我的 ANDROID_SWT
环境变量设置为 <download location>\swt.jar
,然后再次尝试从 cmd
运行 uiautomatorviewer
,但收到与我尝试使用与 eclipse 捆绑的 SWT 时相同的错误消息:
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
有没有其他人遇到过这个错误,如果有,根本原因是什么?
提前感谢您的宝贵时间和帮助!
准确地遵循these instructions。我错误地尝试下载 Eclipse SWT 以解决我遇到的其他问题;在 CLASSPATH
和 ANDROID_SWT
环境变量中设置这个不同的 SWT 版本导致了这个异常。
确保在 Android studio 中选择的 JDK 位置与在环境变量中设置的 JDK 相同。
在我的例子中,将 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/ 并搜索丢失的 class。 在这种情况下搜索 class :
org.eclipse.swt.widgets.Control
你的情况是:
org.eclipse.swt.widgets.Listener
错误中 classes 的名称可以更改,但所需的所有 classes 都来自将要下载的 .jar 文件。
在结果中点击:
[CLASS] org.eclipse.swt.widgets.Control
或针对您的情况:
[CLASS] org.eclipse.swt.widgets.Listener
下载适合您 OS 的最新文件。 This 是最新的,目前适合 Windowsx86_64。
将下载的.jar文件放入:
C:\Users\{userId}\AppData\Local\Android\Sdk\tools\lib
或 OS 的等效路径。
现在uiautomatorviewer.bat应该运行没有任何问题。