idea左侧project不显示项目根目录的解决方法
- 方式一:清空缓存重启idea File -> Invalidate Caches -> Invalidate and Restart
- 方式二(最简单有效的):maven reload all projects
.idea文件夹解释
- .idea文件夹的作用:.idea文件夹是存储IntelliJ IDEA项目的配置信息,主要内容有:
- IDEA项目本身的一些编译配置
- 文件编码信息
- jar包的数据源和相关插件配置信息
- 因为这里面存储的都是自己本地的IDEA配置,所以在使用git做版本控制的时候,一般会排除掉.idea文件,避免多方协作出现代码冲突
- .idea文件夹下文件的介绍
- workspace.xml:存储IDE的窗口布局和其他用户界面相关的配置
- modules.xml:包含有关项目模块的配置信息
- misc.xml:存储一些其他的配置信息
- vcs.xml:包含与版本控制系统相关的设置
- inspections文件夹:存储代码检查工具的配置信息
- runConfigurations文件夹:包含运行和调试配置的信息
- 删除该文件夹的影响:idea将无法识别该项目,一些功能如代码补全、语法检查等无法继续使用
- 误删后如何恢复:VCS→Local History→Show History 找到还没删除.idea目录的记录,进行恢复
idea忽略空catch块警告
- java
try { Field field = object.getClass().getDeclaredField("username"); field.setAccessible(Boolean.TRUE); String username = (String) field.get(object); }catch (NoSuchFieldException | IllegalAccessException e) { } 如果catch捕获到异常以后不需要处理,可以空着,但是idea会提示empty catch block警告,处理方法是使用ignored替换变量名e
javatry { Field field = object.getClass().getDeclaredField("username"); field.setAccessible(Boolean.TRUE); String username = (String) field.get(object); }catch (NoSuchFieldException | IllegalAccessException ignored) { }
idea启动Java项目报 “command line is too long”

问题原因:简单来说就是
依赖爆炸,当pom引入了n多依赖之后,maven通过mvn spring-boot:run运行时,生成类似路径 -classpath C:/Users/me/.m2/repository/org/springframework/spring-core/5.3.8.jar; C:/Users/me/.m2/repository/org/springframework/spring-beans/5.3.8.jar;等等等等,此时在windows环境下执行的命令可能是 java -classpath "spring-core.jar;spring-beans.jar;...(200+项)..." com.example.Application,当字符超出操作系统的最大命令行限制时,就会报错深度解析
底层机制:JVM启动时需要明确指定所有依赖的位置,很容易突破限制
操作系统限制对比
Windows 32767字符 Linux 2097152字符 macOS 262144字符
解决方案:上图idea已经提示了两种解决方案,点击
JAR manifest或者classpath file即可解决解决方案对比
方法 原理 适用场景 缺点 classpath通配符 使用lib/*形式 简单项目 需要目录结构规范 MANIFEST.MF 将类路径写入JAR清单 需要生成可执行JAR 需要重新打包 参数文件(@argfile) 将参数存入临时文件 IntelliJ等现代IDE 需要JVM 9+支持 缩短路径 使用相对路径或符号链接 所有环境 可能影响项目结构
idea中maven无法下载最新的SNAPSHOT的解决办法
IntelliJ IDEA的 File -> Settings -> Build,Execution,Deployment -> Build Tools -> Maven 配置中勾选上
Always update snapshots选项然后保存后再重新 Maven Reimport 即可
