在 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代码和运行环境。