记一次ArrayStoreException错误


在学习Eureka的时候启动报了一个错误(因为粗心大意),CausedBy截图如下:

问题定位过程

  1. 可以看出主要原因是抛出了ArrayStoreException,遂用IDEA的异常断点进行debug,步骤如下:

    1. 在main方法打断点,然后在断点标记上右键点击,在弹出的对话框中点击More,又出来一个对话框

    2. 在第一步最后弹出的对话框内,点击左上角加号(➕),然后选择第三个,在弹出的搜索框中填写ArrayStoreException,即抛出异常的类

    3. 最后点击右下角Done,对项目进行debug

  2. 根据结果是进行下面操作的时候抛出的异常,根据截图找到了var3这个变量。

  3. 根据var3跟踪到了一个注解,然后没有了思路:

  4. 再然后,定位CauseBy中的TypeNotPresentExceptionProxy,找到其构造函数进行debug。

    发现是包装了一个ClassNotFound的异常:

    java.lang.ClassNotFoundException: org.springframework.cloud.context.scope.refresh.RefreshScope
  5. 全局搜索了一下确实没找到RefreshScope这个类,看其包路径发现了一些端倪,发现项目中缺少context相关包

    {%asset_img image-20200524231205101.png %}
  6. 找到这个依赖,查看父依赖(点击左侧带字母o的图标即可跳转)

    {%asset_img image-20200524232336270.png %}

    通过查看父依赖pom文件的结构看到有一个跟我写的差不多的依赖,只是多了个starter。脑海里顿悟,我应该引入带starter的依赖(starter涉及autoconfig,而RefreshScope又和autoconfig有关)。

    {%asset_img image-20200524232713811.png %}

问题解决

随后对比erueka的pom引入,发现erueka的路径少写了个starter。补上,重新引包问题解决。

正确pom如下:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

引入正确pom依赖后,出现了RefreshScope所在的包org.springframework.cloud.context

重启ok,问题解决


文章作者: 夏军
文章链接: http://yoursite.com
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 夏军 !
评论
 本篇
记一次ArrayStoreException错误 记一次ArrayStoreException错误
在学习Eureka的时候启动报了一个错误(因为粗心大意),CausedBy截图如下: 问题定位过程 可以看出主要原因是抛出了ArrayStoreException,遂用IDEA的异常断点进行debug,步骤如下: 在main方法打断点
2020-05-24
下一篇 
Mac上Maven项目“Cannot resolve file tools.jar“ Mac上Maven项目“Cannot resolve file tools.jar“
问题描述在搭建Hadoop的开发环境的时候,发现maven爆红,因为hadoop-common这个包引用了tools.jar 尝试解决然后果断给pom.xml里加上依赖: <dependency> <groupId>j
  目录