关于后端:Java-Runtime-only-recognizes-class-file-versions-up-to-520

28次阅读

共计 2193 个字符,预计需要花费 6 分钟才能阅读完成。

在 SAP Commerce Cloud Backoffice 做 full indexing 时,遇到谬误音讯:

ERROR: Error from server at https://localhost:8983/solr: Error CREATEing SolrCore ‘master_backoffice_backoffice_product_flip’: Unable to create core [master_backoffice_backoffice_product_flip] Caused by: de/hybris/platform/solr/search/MultiMaxScoreQParserPlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
25.05.2023 11:57:49: ERROR: Executing indexer worker as an admin user failed:

有人说是本地 jdk 版本的问题,但我装的的确是 jdk 17:

https://answers.sap.com/questions/13784006/dehybrisplatformso…

最初发现起因是我把 sap machine 下载到本地后,只是将其 bin 文件目录指定到了 path 环境变量上面:

正规的操作流程:

  1. Add the System variable JAVA_HOME and set it to the root directory of the extracted archive (e.g. C:\<…>\sapmachine-jdk-11.0.3)
  2. Edit the System variable PATH and add %JAVA_HOME%\bin to the PATHvariable

“java class file version 55.0” 是指 Java 编译器生成的 Java 类文件的版本号。每个 Java 类文件都有一个与之关联的版本号,用于批示该类文件是应用哪个 Java 编译器版本编译的。

Java 类文件版本号采纳了一种命名约定,它由两个数字组成,别离示意主版本号和次版本号。例如,”55.0″ 示意主版本号为 55,次版本号为 0。在 Java 中,主版本号通常与 Java 编译器的版本号相关联。

上面我将具体解释 ”java class file version 55.0″ 的含意以及与 Java 编译器版本的关系。

  1. 版本号的构造和含意:
    Java 类文件版本号由两个数字组成,如 “55.0”。这两个数字的含意如下:
  • 主版本号:主版本号示意 Java 编译器的版本。较高的主版本号通常意味着应用了更新的 Java 编译器和语言个性。主版本号的变动通常随同着 Java 平台的重大改良和新性能的引入。
  • 次版本号:次版本号示意 Java 类文件的格局版本。次版本号的变动通常示意类文件格式的渺小扭转,如修复了一些谬误或进行了一些优化。

版本号的命名约定遵循肯定的规定。主版本号通常是向后兼容的,也就是说,较新版本的 Java 编译器能够编译较旧版本的 Java 类文件。然而,较旧版本的 Java 编译器可能无奈编译较新版本的 Java 类文件。

  1. Java 编译器和版本对应关系:
    Java 类文件版本号与 Java 编译器版本存在肯定的对应关系。不同的 Java 编译器版本会生成不同版本的类文件。
  • Java SE 1.1:版本号 45.0
  • Java SE 1.2:版本号 46.0
  • Java SE 1.3:版本号 47.0
  • Java SE 1.4:版本号 48.0
  • Java SE 5:版本号 49.0
  • Java SE 6:版本号 50.0
  • Java SE 7:版本号 51.0
  • Java SE 8:版本号 52.0
  • Java SE 9:版本号 53.0
  • Java SE 10:版本号 54.0
  • Java SE 11:版本号 55.0
  • Java SE 12:版本号 56.0
  • Java SE 13:版本号 57.0
  • Java SE 14:版本号 58.0
  • Java SE 15:版本号 59.0
  • Java SE 16:版本号 60.0
  • Java SE 17:版本号 61.0

能够看到,每个 Java 编译器版本都与一个特定的类文件版本号相关联。因而,当应用特定版本的 Java 编译器编译 Java 源代码时,生成的

类文件将带有与该编译器版本绝对应的版本号。

  1. 版本号的重要性:
    类文件版本号的重要性在于确保兼容性和正确的运行环境。较新版本的 Java 编译器通常反对更多的语言个性和性能,因而应用较新版本的编译器能够更好地利用 Java 语言的新性能。

另一方面,确保类文件与运行环境兼容也很重要。如果将应用较新版本编译的类文件部署到较旧版本的 Java 运行环境中,可能会呈现不兼容的状况。因而,在抉择 Java 编译器版本时,须要思考指标运行环境的兼容性。

总结:
“java class file version 55.0” 示意 Java 类文件的版本号,其中主版本号为 55,次版本号为 0。该版本号与 Java 编译器的版本相关联,用于批示类文件是应用哪个版本的 Java 编译器生成的。不同的 Java 编译器版本会生成不同版本的类文件,因而在抉择 Java 编译器版本时须要思考兼容性和所需的语言个性。理解类文件版本号的含意和与编译器版本的对应关系能够帮忙开发人员正确抉择和治理 Java 代码和运行环境。

正文完
 0