如何排查 IDEA 自身报错?

2023-11-06

这个问题是 2023 年 7 月 26 日遇到的,当时还是 IDEA 2023.1.4,结果文章还没写完,7 月 27 日自动给更新了 IDEA 2023.2。问题估计解决了。
所以,本文就简单提一下 IDEA 自身报错的排查方法。

规避/解决方式

先说问题怎么处理:

IDEA 设置从 Maven wrapper 改为使用内置 Maven。
在这里插入图片描述

排查步骤

Maven 项目模块调整后,IDEA 没有正确识别新模块

项目的 Maven 模块有一些调整,fixture 下新增了一个 database 模块。按理说,平时 IDEA 会自动识别新模块并自动移除被删除的模块。但是,新增的 database 模块一直没有被加入源码,被删除的模块仍然在模块列表里。
在这里插入图片描述

使用 Maven 命令 install 正常,但 IDEA 构建项目会发生找不到包、类等编译错误。
在这里插入图片描述
检查 database 模块的 pom.xml 文件,里面没有发现错误。(不然 Maven install 执行也会出问题)

IDEA 尝试执行 Reload All Maven Projects
在这里插入图片描述

执行后问题没有解决,但在 Build 窗口中看到报了一个错误:

在这里插入图片描述
这个错误没有任何详细信息。

尝试过清除缓存等手段均无法解决问题。
在这里插入图片描述

既然 IDEA 报错了,问题还没解决,要想办法知道具体报的是什么错。

检查 IDEA 日志

找 IDEA 日志的方式有很多,可以在 Help 菜单中直接打开,也可以通过 Actions 窗口导航。
在这里插入图片描述

Linux 下可以直接 tail IDEA log,其他平台可能需要手动打开 IDEA 日志文件。
在这里插入图片描述

搜索 Build 窗口中抛出的异常 java.lang.reflect.InvocationTargetException,在日志中发现了完整信息:

2023-07-26 16:31:47,659 [  59616]   INFO - #o.j.i.m.p.MavenProjectsProcessor - [maven import] MavenProjectsProcessorReadingTask took 3303ms
2023-07-26 16:31:47,765 [  59722]   WARN - #o.j.i.maven - java.lang.reflect.InvocationTargetException
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at org.jetbrains.idea.maven.server.MavenRemoteObject.wrapToSerializableRuntimeException(MavenRemoteObject.java:28)
	at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.<init>(Maven3XServerEmbedder.java:239)
	at org.jetbrains.idea.maven.server.Maven36ServerEmbedderImpl.<init>(Maven36ServerEmbedderImpl.java:8)
	at org.jetbrains.idea.maven.server.Maven36ServerImpl.createEmbedder(Maven36ServerImpl.java:22)
# 省略部分链路
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.<init>(Maven3XServerEmbedder.java:229)
# 省略部分链路
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	... 1 more
Caused by: java.io.FileNotFoundException: The specified global settings file does not exist: /home/wuweijie/conf/settings.xml
	at org.apache.maven.cli.configuration.SettingsXmlConfigurationProcessor.process(SettingsXmlConfigurationProcessor.java:117)
	at org.apache.maven.cli.MavenCli.configure(MavenCli.java:1169)
	at org.apache.maven.cli.MavenCli.loadCoreExtensions(MavenCli.java:758)
	at org.apache.maven.cli.MavenCli.container(MavenCli.java:633)
	... 24 more

发现错误原因可能是 Maven 尝试在路径 /home/wuweijie/conf/settings.xml 读取配置文件,但这个路径 conf 目录并不存在,而且我也从来没有在 .m2 目录以外的地方放置过任何 Maven 配置。

检查 Maven 配置

配置文件没有指定。
在这里插入图片描述

虽然勾选了使用 .mvn/maven.confg,但这个路径文件也不存在。
在这里插入图片描述

所以 IDEA 到底是从哪里弄来了一个不存在的路径?

检索 IDEA 的 YouTrack(类似 GitHub Issues)

发现确实有人反馈了同样的问题,已经在 2023.1.5 和 2023.2 解决了。

https://youtrack.jetbrains.com/issue/IDEA-322338/maven-reimport-fails-with-java.io.FileNotFoundException-The-specified-global-settings-file-does-not-exist-conf-settings.xml

在这里插入图片描述

小结

其实查 IDEA 本身的问题和平时没有太大的差异:

  • 查日志,找出具体原因;
  • 查 issues,看是否有同样问题或解决方案;没有类似的问题就提个新的 issue。
  • 感兴趣的可以自己深入排查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何排查 IDEA 自身报错? 的相关文章

随机推荐

  • Storm简介

    场景 伴随着信息科技日新月异的发展 信息呈现出爆发式的膨胀 人们获取信息的途径也更加多样 更加便捷 同时对于信息的时效性要求也越来越高 举个搜索场景中的例子 当一个卖家发布了一条宝贝信息时 他希望的当然是这个宝贝马上就可以被卖家搜索出来 点
  • Redis学习记录(二)

    redis命令 基本命令 心跳命令 ping 读写键值命令 set get DB切换 select 数据库切换 查看数据库中的key数量 dbsize 删除当前库中的数据 flushdb 删除所有库中的数据 flushall 退出客户端命令
  • 【语义分割】DFANet -- Deep Feature Aggregation for Real-Time Semantic Segmentation

    efficient inferrence speed and high accuracy with high resolution Architecture DFANet从整体上可看做是encoder decoder结构 包括四个部分 th
  • sklearn中的XGBClassifier参数详解

    前言 1 Xgboost简介 Xgboost是Boosting算法的其中一种 Boosting算法的思想是将许多弱分类器集成在一起 形成一个强分类器 因为Xgboost是一种提升树模型 所以它是将许多树模型集成在一起 形成一个很强的分类器
  • Linux内核模块管理(查看、添加和删除)

    Linux 的内核会在启动过程中自动检验和加载硬件与文件系统的驱动 一般这些驱动都是用模块的形式加载的 使用模块的形式保存驱动 可以不直接把驱动放入内核 有利于控制内核大小 模块的全称是动态可加载内核模块 它是具有独立功能的程序 可以被单独
  • Java多线程问题--wait()和notify()

    本文内容部分引自 Java多线程编程核心技术 感谢作者 代码地址 https github com xianzhixianzhixian thread git 介绍wait 和notify 的使用以及注意事项 1 wait 方法是Objec
  • 图像相似度的评价指标 : FID(Fréchet Inception Distance)

    FID Fr chet Inception Distance 是用来计算真实图像与生成图像的特征向量间距离的一种度量 如果FID值越小 则相似程度越高 最好情况即是FID 0 两个图像相同 实际计算 参考链接 https machinele
  • 一个石头剪刀布游戏的python解法

    一个石头剪刀布的python解法 import random game 石头 剪刀 布 随机生成一个1 3之间的数 random digit random randint 1 3 输入你猜测的数 num int input 请输入1 2 3
  • RHEL5.6 下安装并测试openCV1.0.0(----成功----)

    一 首先去openCV官网下载openCV1 0 0版本 貌似需要翻墙后才能下载 二 解压源码包并安装 configure without python enable shared prefix opt opencv make make i
  • C++ 多线程 报错invalid use of non-static member function

    创建一个类test class test public void func std cout lt lt test main函数多线程调用test test t new test std thread th t gt func 编译报错 G
  • visual studio用环境变量设置目录

    visual studio里可以用环境变量来指定包含目录等目录
  • 程序的动态特性

    程序的动态特性 大多数情况下 程序的功能是在编译的时候确定下来的 称之为静态特性 而如果程序的功能是在运行时才确定的称为动态特性 动态特性是面向对象语言最强大的功能之一 它在语言层面上支持程序的可扩展性 动态特性 由C 虚函数 抽象基类 动
  • 基于朴素贝叶斯的垃圾分类算法(Python实现)

    一 模型方法 本工程采用的模型方法为朴素贝叶斯分类算法 它的核心算法思想基于概率论 我们称之为 朴素 是因为整个形式化过程只做最原始 最简单的假设 朴素贝叶斯是贝叶斯决策理论的一部分 所以讲述朴素贝叶斯之前有必要快速了解一下贝叶斯决策理论
  • 【Android Studio】配置国内镜像源(利用hosts)

    之前我写过直接用国内镜像的IP地址端口进行配置国内镜像的 如下链接 Android studio配置国内镜像源 但是这种方法不一定在每台电脑上的每次配置都行得通 因此给出第二种方法 给系统文件 hosts 添加国内的镜像 虽然 可能 也不一
  • 云服务器 ECS > 快照 > 快照概述

    快照概述 更新时间 2020 07 01 20 40 29 编辑我的收藏 本页目录 应用场景 快照类型 计费 使用限制 优势 相关操作 联系我们 阿里云快照可以为所有类型的云盘创建崩溃一致性快照 是一种便捷高效的数据容灾手段 常用于数据备份
  • Qt自定义sink风格按钮

    为了满足工作中控件多样性的要求 一些控件的风格需要通过重写画家事件的方式进行自定义 实现sink风格按钮的效果图如下 纯代码实现思路 产生按钮下沉的效果是利用了视觉误差原理 通过更改背景颜色以及图标的位置 呈现出按钮动态改变的效果 按钮未按
  • 【Sonar技术债务解】Null pointers should not be dereferenced

    SonarLint Null pointers should not be dereferenced A NullPointerException could be thrown getReauestAttributes0y can ret
  • 计算机桌面颜色怎么换,电脑桌面字体颜色怎么改

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 电脑桌面字体颜色修改的方法是 1 首先 打开电脑 在桌面空白处点击鼠标右键 点击 个性化 点击打开 2 在窗口中选择 窗口颜色 点击打开 3 在窗口中选择 高级外观设置 点
  • Ubuntu18.04安装ROS+gazebo9

    https blog csdn net qq 35683407 article details 106064918 1 安装ros Ubuntu18 04选择ROS Melodic 教程网址 http wiki ros org cn mel
  • 如何排查 IDEA 自身报错?

    这个问题是 2023 年 7 月 26 日遇到的 当时还是 IDEA 2023 1 4 结果文章还没写完 7 月 27 日自动给更新了 IDEA 2023 2 问题估计解决了 所以 本文就简单提一下 IDEA 自身报错的排查方法 规避 解决