跳至主要內容

IDEA常见问题与解决方案

JavaDaily

IDEA常见问题与解决方案

启动参数过长

Error running OrderStartupApplication. Command line is too long. Shorten the command line and rerun.
解决方案:

  1. 编辑 .idea/workspace.xml
  2. 找到 PropertiesComponent
  3. 添加:

或者这样:

"dynamic.classpath": "true",

设置JDK版本

相关报错:

解决方案如下。

1.先确保已安装 jdk。

2.修改运行设置


3.修改外部依赖设置

lombok 编译报错

前提:lombok 有maven依赖后,还要安装IDE插件open in new window

相关报错:
class lombok.javac.apt.LombokProcessor (in unnamed module @0x29f3e3c7) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x29f3e3c7open in new window

解决方案:找到相应的 pom.xml,更新依赖版本(如果没有,则添加依赖)

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.20</version>
</dependency>

当然,还要确保项目 JDK 版本正确
open in new window

设置启动参数

Run -> Edit Configurations
注意是 VM options

注入环境变量:spring.profiles.active=local

也可以设置 VM options,不过要带上 -D:-Dspring.profiles.active=local

栈溢出

maven build "Exception in thread "main" java.lang.StackOverflowError"

-Xss40m

不是maven的编译选项在下面

内存不足


-Xmx4011m


相关报错:
java: java.lang.OutOfMemoryError: GC overhead limit exceeded

解决方案:需要进行如图所示修改设置

热加载

相关文章:https://cloud.tencent.com/developer/article/1683029open in new window

提示:不用追求自动重新编译,手动按 build 即可。

终端加载环境变量

相关问答:https://stackoverflow.com/questions/36592226/bashrc-not-sourced-on-intellij-ideas-terminal/59138750#59138750open in new window

注意两点:

  1. shell 命令带上 -i
  2. 根据 shell 的版本,使用 .bashrc 或 .zshrc

添加外部jar作为依赖

如下图所示:

打开相应文件夹,选中jar即可。

文件找不到——依赖冲突

相关报错:nested exception is java.io.FileNotFoundException
这一般是 jar 包冲突。

首先确保 pom.xml 的修改已生效,再利用 Maven Helper 插件,寻找冲突的依赖,根据报错信息,把不想的包 exclude 掉,重新加载 pom.xml。

如果报错的包根本不在冲突列表里,也有可能是以下情况:

  • 版本不对, 则 google 一下相关报错,设置成正确的版本
  • 引入了多余的包,执行了不想要的逻辑

exclue掉:

重新加载:

自动import

文件乱码

如图所示,根据情况修改即可:

autowired 提示变量未赋值

这是因为我使用的是社区版open in new window,需要手动设置下open in new window

该方法可以放心使用。
虽然说的是 suppress unsed warning,其实是 suppress never assigned warning, unsed warning 还是会生效的。

上次编辑于:
贡献者: levy