【问题标题】:compiling with java17 even though compiler compliance pointed to java8 in spring tool suite 4使用 java17 进行编译,即使编译器合规性指向 spring 工具套件 4 中的 java8
【发布时间】:2023-02-01 17:01:47
【问题描述】:

我已经下载了 Spring Tool Suite 4 IDE,Java 17 Came Along with that IDE。但我想在 Java8 上工作。

我在我的系统中只安装了 java8 并开始打印“Hello Spring Boot”。

当我运行示例项目时,代码正在用 java17 编译并尝试用 java8 运行(我在执行环境和构建路径中给出了它)

我收到如下错误。

线程“main”中的异常 java.lang.UnsupportedClassVersionError:org/springframework/boot/SpringApplication 已由较新版本的 Java 运行时(类文件版本 61.0)编译,此版本的 Java 运行时仅识别类文件版本至 52.0

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:756)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)

at java.net.URLClassLoader.access$100(URLClassLoader.java:74)

at java.net.URLClassLoader$1.run(URLClassLoader.java:369)

at java.net.URLClassLoader$1.run(URLClassLoader.java:363)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:362)

at java.lang.ClassLoader.loadClass(ClassLoader.java:418)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)

at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

at com.aditya.springboot.HelloSpringBootProjectApplication.main(HelloSpringBootProjectApplication.java:10)

我在 windows-\>preferences-\>Compiler-\>JDK Compliance.. 中将编译器合规性从 17 更改为 1.8,

我将已安装的 JRE 指向从 jre 17(默认)到 jdk 1.8 和

我也在 project-\>properties-\>java 编译器中将编译器合规性从 17 更改为 1.8。

我尝试卸载 STS4 并重新安装它,但我仍然遇到同样的错误。

当我使用 Maven 项目时,我也尝试将 pom.xml 文件中的 \<java.version\> 从 17 更改为 1.8。

任何人都可以帮助我从 STS 使用 java17 来编译我的代码,我还没有在我的系统中安装 java17。我已将环境变量(用户级变量但不是系统级变量)中的 JAVA_HOME 指向仅 java8。

【问题讨论】:

  • 检查你的 pom.xml 配置
  • Spring Boot 3.0 will require Java 17
  • @life888888 maven 中的 java 版本会覆盖 JAVA_HOME 中的所有版本,spring 工具套件/eclipse 中的编译器版本吗?如果 maven 覆盖了所有这些,那么需要配置所有这些吗?

标签: java spring-boot spring-tool-suite sts spring-tools-4


【解决方案1】:

先给出结论,我可以用JDK 17编译,然后在JDK 8环境下执行。 我会给出我的步骤和细节。

创建示例项目

打开https://start.spring.io/

  • 项目:Maven
  • 语言:Java
  • 弹簧引导:2.7.8
  • 包装:罐
  • 爪哇:8
  • 依赖项:添加春网

项目元数据:

  • 组:com.example
  • 工件:演示
  • 名称:演示
  • 描述:Spring Boot 的演示项目
  • 包名:com.example.demo

点击产生

编译范例

解压演示.zip

cd demo

mvn clean package

测试运行

检查 JVM 版本

$ java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_362-b09)
OpenJDK 64-Bit Server VM (Temurin)(build 25.362-b09, mixed mode)

运行 Spring Boot Jar

$ cd target
$ java -jar demo-0.0.1-SNAPSHOT.jar
  .   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _    
( ( )___ | '_ | '_| | '_ / _` |    
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |___, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.8)

2023-02-01 16:31:43.356  INFO 23733 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication v0.0.1-SNAPSHOT using Java 1.8.0_362 on
...
2023-02-01 16:31:44.431  INFO 23733 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2023-02-01 16:31:44.438  INFO 23733 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 1.406 seconds (JVM running for 1.771)

Ctrl + C 退出 Spring Boot 应用程序。

打开你的STS

File -> Import -> Maven -> Existing Maven Projects

点击下一个

根目录:点击浏览

选择解压演示文件夹

点击结束

检查STS包资源管理器

演示树:JRE System Library [JavaSE-1.8]默认是配置 JDK 8

STS 菜单:Windows -> Show View -> Project Explorer

选择演示(项目)

弹出菜单 -> Run As -> Spring Boot App

在控制台窗口中可以看到启动和运行...

因为你没有提供足够的步骤和信息,所以我只能用最简单的步骤,以及你可以重复的步骤,来提供我能提供的帮助。

您的要求:STS 4,使用 JDK8。

希望这些步骤可以帮助您在您的机器上重现相同的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2014-05-29
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    相关资源
    最近更新 更多