dynamic.classpath标志是做什么的? (IntelliJ项目设置)

在文件.idea / workspace.xml中可以find以下内容:

<component name="PropertiesComponent"> ... <property name="dynamic.classpath" value="false" /> </component> 

dynamic.classpath标志的目的是什么?

将它设置为true恰好是IntelliJ错误的解决方法 。 但是我也很好奇,如果它有任何副作用。

该选项控制如何将classpath传递给JVM:通过命令行或通过文件。 大多数操作系统都有最大的命令行限制,当它超过时,IDEA将无法运行你的应用程序。

当命令行超过32768个字符时,IDEAbuild议您切换到dynamic类path。 长类path被写入文件,然后由应用程序启动器读取并通过系统类加载器加载。

如果您对实现细节感兴趣,可以查看IDEA社区版源代码, JdkUtil.java文件, setupJVMCommandLine方法。

IntelliJ 9.0.4的一个副作用是打开选项后,类path不再完整。

在我的情况下,当我在一个特定的包中运行所有unit testing时,在错误对话框中select“ ”后,该选项就被打开了。 错误消息显示为“ 命令行太长,为了减less文件的长度,可以使用类path文件。是否要为项目的所有运行configuration启用类path文件模式

在这之后,一些testing失败了,因为其他模块中所需的类比classpath中缺less。

我发现没有对话,我可以切换回来。 我不得不手动编辑.iws文件,并将dynamic.classpath选项切换回“ false ”。