原因分析
出现此问题的直接原因是:IDEA集成开发环境运行项目源码的时候,是通过命令(首行那个非常非常长的)来启动Java进程的。这个命令主要包含两大部分:
vm/程序参数。也就是你看到的那些-XX -D等参数,这部分理论上可以无限长但实际上一般不会太长
-classpath参数,它用于指定运行时jar包路径(因为jar包理论上是可以在任何地方的),这部分可能性就多了
关键就在于-classpath参数,它可以非常长,你依赖的jar包越多此路径就越长;你的base基路径越长它就越长;倘若你还要做复杂的Junit单元测试,那加入的jar包就更多长度可能就越长喽。总的来说:此part是很有可能超长从而导致Command line is too long现象的。
如果类路径太长(可能性大),或者您有许多VM参数(可能性小),则无法启动该程序。原因是大多数操作系统都有命令行长度限制。在这种情况下,IDEA将提供尝试缩短类路径的能力。
解决办法
1. 方案一:修改IDEA
位置导航:小锤子旁边,下拉:Edit Configurations->configuration->shorten command line
从对话框中选择(我的不生效,有的同事可以,没仔细研究)
2. 方案二:修改.idea/workspace.xml
- 找到idea的项目空间下的 .idea/workspace.xml
- 编辑器打开并找到如下
<component name="PropertiesComponent"> ... </componet>
- 在其中加入
<property name="dynamic.classpath" value="true"/>
- 保存并重启idea
- 有可能不生效,再次修改重启