运行springboot:run报错java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

问题描述

用IDEA构建一个简单的微服务,用spring-boot-maven-plugin插件的run目标(goal)构建工程,报错如下:
在这里插入图片描述工程的pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zswang</groupId>
    <artifactId>license-service</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Eagle-eye Licensing Service</name>
    <description>Licensing Service</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.4.RELEASE</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

解决方法

首先观察报错内容,主要是actuate出错:
在这里插入图片描述根据横云断岭这篇分析,这个错误来自于springboot2更改类名,但是我这儿用的是springboot1啊(不信你看这个工程的pom继承的pom的版本是1.4.4.RELEASE)。后来仔细一看发现,我的spring-boot-starter-actuator用的版本是2.0.4.RELEASE。原来如此,果断改成1.4.4.RELEASE,spingboot:run成功了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个Java异常,表示在尝试将一个对象存储到数组中时发生了错误。更具体地说,它是由于在注释中使用了一个不存在的类型而导致的。这可能是因为您正在使用某个库或框架,但该库或框架中的某些注释引用了不存在的类。要解决此问题,您需要检查您的代码中的注释,并确保所有引用的类型都存在。 ### 回答2: 该错误通常出现在Java应用程序中,表示数组的类型出现了问题。这种类型的问题可能是由于Java语言的限制、编译器缺陷、程序员不当的编码或其他原因导致的。具体而言,这个错误可能是由以下几个因素造成的: 1. 类型不匹配:这个错误通常发生在代码中使用了无效或不匹配的数组类型。例如,可能会尝试将不同数据类型的元素存储在同一数组中,这会导致类型不匹配的错误。 2. 使用不适当的数组:这也是一个常见的问题,当使用不适当的数组时,就可能出现这个错误。例如,使用长度为零的数组或数组的长度超出了其定义的边界,都有可能导致这个错误。 3. 类型注解:在Java 8及其以后的版本中,使用注解成为了一种常见的编程方式。从理论上讲,注解可以为Java类和接口添加新的信息和功能。然而,在使用注解时,有许多常见的错误,其中一些可能导致类型不匹配的错误,从而导致这个错误。 要解决这个错误,需要仔细检查代码,找到可能导致错误的原因,并修复它们。如果出现了类型不匹配的问题,可以尝试更改数组类型或使用其他数据结构来替代数组。如果是由于使用不适当的数组引起的,则需要更改数组的长度或确保数组的边界不会超出范围。最后,如果注解造成了问题,则需要仔细检查注解的类型和用法,并确保它们与Java版本兼容。 ### 回答3: 这个错误的原因是使用了Java中的反射机制,但在Annotation的定义中,有一些类或接口找不到。在使用JavaAnnotation时,有一些Annotation是可以定义特定类型的,比如@Retention和@Target,这些Annotation的定义中有使用到某些类或接口。如果这些类或接口在运行期间没有被正确找到或者不存在,就会导致这个错误的出现。 更具体地说,这个错误通常是在使用反射机制调用某个方法或读取某个字段时出现的,因为在这个过程中会对Annotation进行解析和检查,而如果Annotation的定义中有某些类型不存在,就会抛出这个异常。 要解决这个错误,需要检查Annotation的定义中是否使用了不存在的类型。在编写代码时,可以使用工具来辅助检查Annotation定义中的错误,比如使用Eclipse的插件或IntelliJ IDEA的功能。如果发现存在类或接口不存在的情况,可以修改Annotation的定义,或者引入正确的依赖库以解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值