由于StackExchange建议我不要就以前存在的帖子寻求帮助或澄清,我正在制作一个新的线程。
在Windows 10 x64上,我下载了Eclipse SWT(在Downloads页面倒数第二节),将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
是否有其他人遇到过此错误,如果有,根本原因是什么?
提前感谢您的时间和帮助!
4条答案
按热度按时间eoigrqb61#
在我的例子中,添加ANDROID_SWT到环境变量或编辑PATH没有解决问题,因此我通过this问题的帮助找到了一个不同的解决方案。
正在运行ui自动查看器. bat并输出:
转到:https://www.findjar.com/并搜索缺少的类。在本例中,搜索类:
对于您的情况,它是:
错误中的类名称可以更改,但所有需要的类都来自将要下载的**. jar**文件。
在结果中单击:
或针对您的情况:
下载最新的和适合您的操作系统的文件。This是最新的和适合Windowsx86_64目前。
将下载的**. jar**文件放入:
C:\用户{用户ID}\应用数据\本地\Android\Sdk\工具\库
或操作系统的等效路径。
现在,uiautomatorviewer.bat运行起来应该没有任何问题。
g0czyy6m2#
确保在Android studio中选择的JDK位置与在环境变量中设置的JDK相同。
gkl3eglg3#
我的情况例外
解决方案遵循的步骤
1.转到https://jar-download.com/
1.搜索丢失的jar文件,在我的例子中,它是org.eclipse.swt.custom.tabletreeitem
1.下载与您的Mac/Win/Linux系统兼容的jar文件(在我的例子中,它是mac enter image description here
1.提取jar文件并复制它
1.转到SDK内的lib文件夹(Android/Sdk/Tools/Lib
1.将jar文件粘贴到lib文件夹中
1.重新启动终端或cmd
1.对cd $ANDROID_HOME/tools/bin再次运行该命令
1.运行命令。/ui自动查看器
或者
尝试下载不同版本的swt jar文件,并将其复制到相应的文件夹中。
https://github.com/android/android-test/issues/911#issuecomment-849389068
anauzrmj4#
严格按照these instructions执行,我犯了一个错误,试图下载Eclipse SWT来解决我遇到的其他问题;在
CLASSPATH
和ANDROID_SWT
环境变量中设置这个不同的SWT版本导致了这个异常。