SpringBoot2-5

本文讲述了如何解决Java报错1关于目标发行版问题,升级Maven并调整配置以支持1.8。接着处理报错2关于Spring Boot版本过高导致的访问问题,建议降级至版本3以下。最后,针对SpringBoot Configuration Annotation的问题提供了配置与排除处理方案,包括Lombok依赖的顺序和Maven构建设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先解决一个问题【报错1】java: 无效的目标发行版: 17

修改位置:maven的配置需要改为选取本地maven所在目录(这些都是java指定了1.8比较低但是又都用的版本导致)

再解决一个问题【报错2】

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

这个错误应该是spring boot版本过高导致

基于

重新建立一个spring boot 项目,版本应该小于3,亲测有效

第三个问题

    Spring Boot Configuration Annotation  Processor not  configured

在帮助文档

    Spring Boot Reference Documentation

中找到

    

     3.1. Configuring the Annotation Processor

 pom引入依赖,Maven刷新

   

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

同时确保build时不用build上面的这个Processor

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

以下提示代表需要重新启动项目 Re-Run Spring Boot Configuration Annotation

 

注意: make sure that the lombok dependency is defined before the spring-boot-configuration-processor dependency.  去报lombok依赖定义要在上面的依赖前面

用Maven Clean&Package

复制打包文件到本地

 打开,看上去无论写不写exclude里面都没有pring-boot-configuration-processor

 这个或许是默认不打包吧

   

 

YAML

    适用于以数据为中心的配置

  语法:  Key: value  有一个空格

              大小写敏感

             使用缩进表示层级关系

             缩进不建议用tab,只用空格

              缩进空格数不重要,只要相同层级的元素左对齐即可

             字符串无需加引号

            # 注释  ‘’  “”表示其他意义

 数据类型

     字面量   date boolean  string  number null

       对象:键值对集合  map hash set  object

               k: 行内写法{k1:v1,k2:v2,k3:v3}或者

                k:

                   k1:v1

   数组  array list queue

             行内写法    k: [v1,v2,v3]

或     k:

           -  v1

          -   v2   用一个横杠代表一个元素

使用YAML

创建文件,可以写成yml或者yaml

 properties和yml都会生效,前者优先

如下,使用@Component使该类bean加入容器中

使用@ConfigurationProperties(prefix = "person")与上图两个配置文件前缀为person的属性绑定

@ConfigurationProperties(prefix = "person")
@Component
@ToString
@Data
public class Person {
    private  String userName;
    private  Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interests;
    private List[] animal;
    private Map<String,Object> Score;
    private Set<Double> salarys;
    private Map<String,List<Pet>> allPets;



}

编写配置文件:字符串也可以用单引号或双引号标记

                     但是如果里面有\n   在作为json输出到页面上差别不大,但是如果在controller里面输出对象属性,就会有以下差别

                                                   单引号会改变它的行为,就是作为普通字符串输出

                                                    双引号则 尊重\n换行的行为,原样输出

userName这种驼峰也可以写成user-name也是有效的
person:
  userName: 李白
  boss: true
  birth: 2011/11/22
  age: 18
  #interests: [篮球,足球]
  interests:                  #list
    - 篮球
    - 足球
    - 乒乓球
  animal: [猫,狗]
#  Score:
#    english: 80
#    math: 90
  Score: {English: 80,Math: 90} #map {}内不必有空格,为json写法
  salarys:
    - 998
    - 777
  pet:
     name: 阿花
     weight: 98.77
  allPets:
    sick:
      - {name: 阿飞,weight: 78.7}   #第1种对象表示法
      - {name: 阿歪,weight: 65.3}
      - name: 阿园    #第二种对象表示法  -代表一个元素
        weight: 99
    health:
      - {name: 阿花,weight: 18.7}
      - {name: 阿斗,weight: 38.3}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i7i8i9com

创业创新像大树那样给更多人乘凉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值