java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > IDEA 自身报错排查方法

IntelliJ IDEA 2023.1.4 无法刷新Maven项目模块的问题及解决方法

作者:wuweijie@apache.org

这篇文章主要介绍了如何排查 IDEA 自身报错问题,本文以IntelliJ IDEA 2023.1.4无法刷新项目Maven模块的问题为例,给大家详细讲解,需要的朋友可以参考下

这个问题是 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 本身的问题和平时没有太大的差异:

到此这篇关于IntelliJ IDEA 2023.1.4 无法刷新项目 Maven 模块的问题为例的文章就介绍到这了,更多相关IDEA 自身报错排查方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文