【异常解决】java: 无法访问org.springframework.boot.SpringApplication的解决方案

简介: 【异常解决】java: 无法访问org.springframework.boot.SpringApplication的解决方案

一、背景描述

Spring官网:Spring | Home

通过Spring官网初始化一个新的SpringBoot项目,如下图所示。

关键信息:maven项目,Java语言,SpringBoot版本号,项目信息,打包方式,Java版本,然后点击下边最左侧的 GENERATE CTRL + 回车,即可生成一个SpringBoot项目。

下载后使用IDEA打开,将maven依赖下载好,JDK版本选择Java8(本地电脑只有一个Java1.8),没有报错,启动项目后,结果启动失败,报错信息如下:

java: 无法访问org.springframework.boot.SpringApplication
  错误的类文件: /D:/Repository/org/springframework/boot/spring-boot/3.0.5/spring-boot-3.0.5.jar!/org/springframework/boot/SpringApplication.class
    类文件具有错误的版本 61.0, 应为 52.0
    请删除该文件或确保该文件位于正确的类路径子目录中。

理论上来说,从Spring官网初始化的一个项目,没有添加任何代码,不应该报错。但是,实际上很莫名其妙的出现报错信息。

二、报错原因

报错信息里所说的类文件版本指的是java class file version,java类文件版本。其实这个该版本号与jdk版本号是存在对应关系,具体来说61.0对应jdk17,52.0对应jdk8。

完整对应关系参见:https://stackoverflow.com/questions/9170832/list-of-java-class-file-format-major-version-numbers ,访问可能会比较慢,我已经截图了,看下图即可。

出现上述错误主要是类文件版本与JDK版本号不对应导致的。解决这个问题很简单,把两者的关系对应上即可。

三、解决方案

两种方案:一是降低类文件版本号(即降低SpringBoot版本号),二是提升JDK版本号

拿我自己初始化的这个SpringBoot项目来说,我选择的SpringBoot版本3.0.5,该版本的SpringBoot所需的JDK版本是JDK17,而我本地电脑只安装了一个JDK8的运行环境,所以才会报这个错误。

从Spring官网查看SpringBoot版本号,查看地址:https://spring.io/projects/spring-boot#support ,降低版本号后项目正常启动成功。我选择的是 2.1.5.RELEASE。

完结!


相关文章
|
2天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
8 2
|
4天前
|
Java API Apache
|
7天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
20 3
|
9天前
|
Java
如何在 Java 中处理“Broken Pipe”异常
在Java中处理“Broken Pipe”异常,通常发生在网络通信中,如Socket编程时。该异常表示写入操作的另一端已关闭连接。解决方法包括:检查网络连接、设置超时、使用try-catch捕获异常并进行重试或关闭资源。
|
9天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
27 2
|
11天前
|
存储 安全 Java
如何避免 Java 中的“ArrayStoreException”异常
在Java中,ArrayStoreException异常通常发生在尝试将不兼容的对象存储到泛型数组中时。为了避免这种异常,确保在操作数组时遵循以下几点:1. 使用泛型确保类型安全;2. 避免生类型(raw types)的使用;3. 在添加元素前进行类型检查。通过这些方法,可以有效防止 ArrayStoreException 的发生。
|
12天前
|
人工智能 Oracle Java
解决 Java 打印日志吞异常堆栈的问题
前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。
28 2
|
16天前
|
Java 索引
如何避免在 Java 中引发`StringIndexOutOfBoundsException`异常
在Java中,处理字符串时若访问了不存在的索引,会抛出`StringIndexOutOfBoundsException`异常。为避免此异常,应确保索引值在有效范围内,例如使用`length()`方法检查字符串长度,并确保索引值不小于0且不大于字符串长度减1。
|
18天前
|
安全 Java 数据安全/隐私保护
如何配置 Java 安全管理器来避免访问控制异常
配置Java安全管理器以防止访问控制异常,需在启动JVM时通过 `-Djava.security.manager` 参数启用,并设置安全策略文件,定义权限规则,限制代码执行操作,确保应用安全。
|
19天前
|
Java
Java访问外网图片地址时,如何添加代理?
【10月更文挑战第14天】Java访问外网图片地址时,如何添加代理?
20 2