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

Intellij idea dynamic.classpath标志做什么?(IntelliJ项目设置),intellij-idea,Intellij Idea,在文件.idea/workspace.xml中可以找到以下内容: <component name="PropertiesComponent"> ... <property name="dynamic.classpath" value="false" /> </component> ... dynamic.classpath标志的用途是什么 将其设置为true恰好是IntelliJ bug的一个错误。但是我也很好奇它是否有任何副作用。这个选项控制类

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

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

...
dynamic.classpath标志的用途是什么


将其设置为true恰好是IntelliJ bug的一个错误。但是我也很好奇它是否有任何副作用。

这个选项控制类路径如何传递到JVM:通过命令行,或者通过文件。大多数操作系统都有最大命令行限制,当超过该限制时,IDEA将无法运行您的应用程序

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


如果您对实现细节感兴趣,可以查看IDEA Community edition源代码、文件、
setupJVMCommandLine
方法。

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

在我的例子中,在运行特定包中的所有单元测试时,在错误对话框中选择“是”后,该选项被打开。错误消息显示“命令行太长。为了减少其长度,可以使用类路径文件。是否要为项目的所有运行配置启用类路径文件模式?”

在此之后,一些测试失败了,因为需要来自其他模块的类,而这些类在类路径中丢失了


我找不到可以切换回的对话框。我不得不手动编辑.iws文件,并将dynamic.classpath选项切换回“false”。

IntelliJ 13.1仍然存在同样的问题。我提出了一个错误:因此,如果您的应用程序或单元测试干扰了类加载器(例如,调用和处理其结果),那么如果
动态.classpath
true
,应用程序(或测试)可能会无明显原因地失败。