zoukankan      html  css  js  c++  java
  • macOS系统在终端执行Java项目时报错:this version of the Java Runtime only recognizes class file versions up to 52.0

    macOS系统在终端执行Java项目时报如下错:

    具体为:

     1 org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. 
     2 Please check the server log for more details. 
     3 Original error: An unknown server-side error occurred while processing the command. 
     4 Original error: Cannot verify the signature of '/var/folders/sw/b411gncn4cq2f16rvkst35kc0000gn/T/2021125-26019-1gzi67z.7852/
     5 appium-uiautomator2-server-v4.19.0.apk'. 
     6 Original error: Error: A JNI error has occurred, please check your installation and try again
     7 Exception in thread "main" java.lang.UnsupportedClassVersionError: 
     8 com/android/apksigner/ApkSignerTool has been compiled by a more recent version of the Java Runtime (class file version 53.0), 
     9 this version of the Java Runtime only recognizes class file versions up to 52.0
    10     at java.lang.ClassLoader.defineClass1(Native Method)
    11     at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    12     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    13     at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    14     at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    15     at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    16     at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    17     at java.security.AccessController.doPrivileged(Native Method)
    18     at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    19     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    20     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    21     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    22     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

    核心的报错信息为:

    Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/apksigner/ApkSignerTool has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0

    …… 也是各种百度、各种查找原因,最后查看此文得到解决思路:【jar】Java Runtime recognizes class file versions up to 52.0

    1、52.0和53.0 是什么意思?

    —— 具体版本以及对应的java版本:

    49 = Java 5
    50 = Java 6
    51 = Java 7
    52 = Java 8
    53 = Java 9
    54 = Java 10
    55 = Java 11
    56 = Java 12
    57 = Java 13
    58 = Java 14

    因此,上述报错的意思是:使用了Java版本9(53.0)编译了代码,而当前的版本是Java8(52.0)

    所以,需要降版本,那么,怎么降呢?……

    2、继续往上看第4行的报错:

    Original error: Cannot verify the signature of '/var/folders/sw/b411gncn4cq2f16rvkst35kc0000gn/T/2021125-26019-1gzi67z.7852/appium-uiautomator2-server-v4.19.0.apk'.

    —— 即android 的com/android/apksigner/ApkSignerTool进行 appium-uiautomator2-server-v4.16.0.apk 包signer处理时提示版本问题

    根据参考文章的提示,

    “进入文件/opt/androidsdk/android-sdk-linux/build-tools/, 依赖的是 30.0.0-preview 此时安装的android-sdk的版本是30,通过FQ重新下载了版本29”

    我也前往Android SDK目录查看文件及其路径,发现我的也是 30.0.0-preview !所以需要更换低一点的 build-tools !!! 因此,重装一个低版本的Android SDK。

       3、 重装了一个低版本的Android SDK(android-sdk-r23-macosx,原本是r24)之后,又报新的错:

     1 org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. 
     2 Original error: An unknown server-side error occurred while processing the command. 
     3 Original error: Cannot verify the signature of '/var/folders/sw/b411gncn4cq2f16rvkst35kc0000gn/T/2021126-94555-107z0f9.k27k/
    appium-uiautomator2-server-v4.19.0.apk'.
    Original error: Could not find 'apksigner.jar' in
    ["/Library/android-sdk-r23-macosx/platform-tools/apksigner.jar",
    "/Library/android-sdk-r23-macosx/emulator/apksigner.jar",
    "/Library/android-sdk-r23-macosx/cmdline-tools/latest/bin/apksigner.jar",
    "/Library/android-sdk-r23-macosx/tools/apksigner.jar",
    "/Library/android-sdk-r23-macosx/tools/bin/apksigner.jar",
    "/Library/android-sdk-r23-macosx/apksigner.jar",
    "/Library/android-sdk-r23-macosx/build-tools/23.0.1/apksigner.jar",
    "/Library/android-sdk-r23-macosx/build-tools/23.0.1/lib/apksigner.jar"].
    Do you have Android Build Tools installed at '/Library/android-sdk-r23-macosx'? 4 Build info: version: 'unknown', revision: 'unknown', time: 'unknown' 5 System info: host: 'crgtiOSCI.local', ip: 'fe80:0:0:0:1455:c69a:4de1:af22%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '1.8.0_201' 6 Driver info: driver.version: AndroidDriver 7 remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command.
    Original error: Cannot verify the signature of '/var/folders/sw/b411gncn4cq2f16rvkst35kc0000gn/T/2021126-94555-107z0f9.k27k/
    appium-uiautomator2-server-v4.19.0.apk'.
    Original error: Could not find 'apksigner.jar' in
    ["/Library/android-sdk-r23-macosx/platform-tools/apksigner.jar",
    "/Library/android-sdk-r23-macosx/emulator/apksigner.jar",
    "/Library/android-sdk-r23-macosx/cmdline-tools/latest/bin/apksigner.jar",
    "/Library/android-sdk-r23-macosx/tools/apksigner.jar",
    "/Library/android-sdk-r23-macosx/tools/bin/apksigner.jar",
    "/Library/android-sdk-r23-macosx/apksigner.jar",
    "/Library/android-sdk-r23-macosx/build-tools/23.0.1/apksigner.jar",
    "/Library/android-sdk-r23-macosx/build-tools/23.0.1/lib/apksigner.jar"].
    Do you have Android Build Tools installed at '/Library/android-sdk-r23-macosx'? 8 at getResponseForW3CError (/usr/local/lib/node_modules/appium/node_modules/_appium-base-driver@7.4.1@appium-base-driver/lib/protocol/errors.js:804:9) 9 at asyncHandler (/usr/local/lib/node_modules/appium/node_modules/_appium-base-driver@7.4.1@appium-base-driver/lib/protocol/protocol.js:380:37) 10 Build info: version: 'unknown', revision: 'unknown', time: 'unknown' 11 System info: host: 'crgtiOSCI.local', ip: 'fe80:0:0:0:1455:c69a:4de1:af22%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '1.8.0_201'
     
    ——这个问题 有搜到是因为AndroidSDK有缺失引起的,于是更新SDK。
    更新方法:
    到Android SDK目录下的tools文件夹下(/Library/android-sdk-r23-macosx/tools),
    找到 android.exe,双击打开可视化界面,选择项目进行install。(install的时间挺久的……)

      

     更新了之后,build-tools出现了一系列的的版本号?有些里面有'apksigner.jar',有些没有。

     再次运行还是说:the Java Runtime only recognizes class file versions up to 52.0 这个错。
    它可能会自动匹配到最高的那个的'apksigner.jar'
     于是手动删除:最高的那个30.0.0版本:
      

      

    4、重新跑,又报新的错……

    org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. 
    Please check the server log for more details.
    Original error: An unknown server-side error occurred while processing the command.
    Original error: Error executing adbExec. Original error: 'Command '/Library/android-sdk-r23-macosx/platform-tools/adb -P 5037 -s 66J0218C21003454 install -r /var/folders/sw/b411gncn4cq2f16rvkst35kc0000gn/T/2021126-86279-1u3qq29.yylv/appium-uiautomator2-server-v4.19.0.apk' timed out after 20000ms'. Try to increase the 20000ms adb execution timeout represented by 'uiautomator2ServerInstallTimeout' capability Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'crgtiOSCI.local', ip: 'fe80:0:0:0:1455:c69a:4de1:af22%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '1.8.0_201' Driver info: driver.version: AndroidDriver remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command '/Library/android-sdk-r23-macosx/platform-tools/adb -P 5037 -s 66J0218C21003454 install -r /var/folders/sw/b411gncn4cq2f16rvkst35kc0000gn/T/2021126-86279-1u3qq29.yylv/appium-uiautomator2-server-v4.19.0.apk' timed out after 20000ms'. Try to increase the 20000ms adb execution timeout represented by 'uiautomator2ServerInstallTimeout' capability at getResponseForW3CError (/usr/local/lib/node_modules/appium/node_modules/_appium-base-driver@7.4.1@appium-base-driver/lib/protocol/errors.js:804:9)

    ——有查到一个原因说是 appium版本太高导致的,不知道是不是。试了再说。

    5、更换  appium版本 (从1.20.2降到1.17.1)

     使用命令:sudo cnpm install -g appium@1.17.1 --force   (很快哦!) 

    如果不加 --force 命令的话,可能会失败,如下图中红框上面的ERR报错,提示需要手动去删除原来appium版本的安装目录文件夹,所以加 --force比较方便啦。

     

      安装成功:

      

    6、最后再次终端执行命令:java -jar target/XXXX-1.0-SNAPSHOT.jar   ,可终于成功运行起来啦!!!

    【Reference】

    1、【jar】Java Runtime recognizes class file versions up to 52.0

  • 相关阅读:
    Atitit api标准化法 it法学之 目录 1. 永远的痛点:接口与协议的标准化 1 2. 标准化优点 1 3. 标准化组织 2 3.1. 应当处理标准化委员会 2 3.2. 标准化提案与表决
    Atitit 远程存储与协议 mtp ptp rndis midi nfs smb webdav ftp hdfs v3 Atitit mtp ptp rndis midi协议的不同区别
    Atitit redis使用场合总结 使用场景 目录 1.1. 3. Session 存储 1 1、 配置数据查询 1 2. 排行榜应用,取TOP N操作 1 1.2.     1、查找最
    Atitit Java制作VCARD vcf 以上就是关于vCard的基本介绍,维基百科(英文)https://en.wikipedia.org/wiki/VCard写的比较全,可惜我看不懂。
    Atitit 存储方法大总结 目录 1. 存储方式分类 2 1.1. 按照数据分类为 结构化 半结构化 非结构化 2 1.2. 按照内外部可分类 内部存储和外部存储持久化 2 1.3. 按照本地远
    Atiitt 自我学习法流程 1.预先阶段 1.1.目标搜索 资料搜索 1.2. 1.3.通过关联关键词 抽象 等领域 拓展拓宽体系树 1.4. 2.分析整理阶段 2.1.找出重点 压缩要学会
    Atitit 编程 序列化技术点 概念原理v2 1. 序列化: 1 2. 序列化的目的 1 2.1. 为了传输 或者存储 1 3. 应用场合 1 3.1. Form提交url 1 3.2. For
    Atitit session的概念总结
    atitit 面试问题表 侧重于项目和业务描述方面.v2 良好的标准:: 1.回答问题比较流畅,较少出现停顿现象,较少犹豫 2.回答有条理清晰 不杂乱 3.回答较为丰富内容 4.精神状态紧张
    Atitit hibernste5 注解方式开发总结 目录 1. 映入hb5的jar 建立项目 1 1.1. 建表tab1 ,这里使用了sqlite数据库 1 1.2. 建立映射实体类tab1
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/14465975.html
Copyright © 2011-2022 走看看