【问题标题】:Uiautomatorviewer SWT exceptionUiautomatorviewer SWT 异常
【发布时间】: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


【解决方案1】:

准确地关注these instructions。我错误地尝试下载 Eclipse SWT 以解决我遇到的其他问题;在 CLASSPATHANDROID_SWT 环境变量中设置不同的 SWT 版本会导致此异常。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      将下载的.jar文件放入:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-23
        • 1970-01-01
        • 2015-08-10
        • 1970-01-01
        • 2020-12-15
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        相关资源
        最近更新 更多