eclipse UI自动查看器SWT异常

sc4hvdpw  于 2023-02-22  发布在  Eclipse
关注(0)|答案(4)|浏览(246)

由于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

是否有其他人遇到过此错误,如果有,根本原因是什么?
提前感谢您的时间和帮助!

eoigrqb6

eoigrqb61#

在我的例子中,添加ANDROID_SWT到环境变量或编辑PATH没有解决问题,因此我通过this问题的帮助找到了一个不同的解决方案。
正在运行ui自动查看器. 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:\用户{用户ID}\应用数据\本地\Android\Sdk\工具\库
或操作系统的等效路径。
现在,uiautomatorviewer.bat运行起来应该没有任何问题。

g0czyy6m

g0czyy6m2#

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

gkl3eglg

gkl3eglg3#

我的情况例外

Exception in thread "main" java.lang.NoClassDefFoundError: 
  org/eclipse/swt/custom/TableTreeItem
at org.eclipse.jface.util.OpenStrategy.initializeHandler(OpenStrategy.java:270)
at org.eclipse.jface.util.OpenStrategy.<init>(OpenStrategy.java:108)
at org.eclipse.jface.viewers.StructuredViewer.hookControl(StructuredViewer.java:1213)
at org.eclipse.jface.viewers.ColumnViewer.hookControl(ColumnViewer.java:68)
at org.eclipse.jface.viewers.AbstractTreeViewer.hookControl(AbstractTreeViewer.java:1452)
at org.eclipse.jface.viewers.TreeViewer.hookControl(TreeViewer.java:274)
at org.eclipse.jface.viewers.TreeViewer.<init>(TreeViewer.java:137)
at org.eclipse.jface.viewers.TreeViewer.<init>(TreeViewer.java:124)
at com.android.uiautomator.UiAutomatorView.<init>(UiAutomatorView.java:361)
at com.android.uiautomator.UiAutomatorViewer.createContents(UiAutomatorViewer.java:66)
at org.eclipse.jface.window.Window.create(Window.java:431)
at org.eclipse.jface.window.Window.open(Window.java:790)
at com.android.uiautomator.UiAutomatorViewer.main(UiAutomatorViewer.java:78)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.custom.TableTreeItem
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 13 more

解决方案遵循的步骤
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

anauzrmj

anauzrmj4#

严格按照these instructions执行,我犯了一个错误,试图下载Eclipse SWT来解决我遇到的其他问题;在CLASSPATHANDROID_SWT环境变量中设置这个不同的SWT版本导致了这个异常。

相关问题