【发布时间】:2018-07-20 22:50:29
【问题描述】:
由于 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
有没有其他人遇到过这个错误,如果有,根本原因是什么?
提前感谢您的时间和帮助!
【问题讨论】:
-
因为您遇到异常而不是编译错误,所以发生的情况是 Eclipse 知道要构建的库,但您的部署环境不知道在哪里可以找到 SWT jar。请edit您的问题并说明您是如何部署和运行项目的。
-
嗨,@JimGarrison!我正在尝试从 cmd 运行
uiautomatorviewer,因此我相信我只需要设置ANDROID_SWT路径变量。然而,尽管我设置了这个变量,并且将 Java 添加到我的PATH变量中,我还是收到了上述异常。 -
您需要将
swt.jar文件添加到类路径中。试试看。 -
嗯,我创建了一个新变量
CLASSPATH,因为它在我的环境变量中尚不存在,并添加了从 Eclipse 下载的swt.jar的绝对路径,但我收到了同样的异常。 .. 我将重新启动计算机,以防环境变量的更改仅在您注销并创建新会话时生效! -
这里是我目前设置的一些环境变量: 1) ANDROID_HOME - .\Android\sdk 的位置(在 Android Studio 目录中) 2) ANDROID_SWT - swt.jar 的位置 3 ) CLASSPATH - swt.jar 的位置 4) PATH - JDK 8 的附加 bin 目录(我读到 JDK 9 与 uiautomatorviewer 不兼容),以及 %ANDROID_HOME%\platform-tools 和独立的 adb 工具目录...我我仍然遇到同样的异常。再次感谢您在此问题上的持续帮助!
标签: java windows eclipse swt uiautomatorviewer