dynamic.classpath标志有什么作用?(IntelliJ项目设置)

Arn*_*son 35 intellij-idea

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

<component name="PropertiesComponent">
  ...
  <property name="dynamic.classpath" value="false" />
</component>
Run Code Online (Sandbox Code Playgroud)

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

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

Cra*_*der 39

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

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

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

  • 因此,如果您的应用程序或单元测试弄乱了类加载器(例如调用 [URLClassLoader.getURLs()](https://docs.oracle.com/javase/6/docs/api/java/net/URLClassLoader.html# getURLs%28%29) 并处理其结果)——如果“dynamic.classpath”为“true”,那么应用程序(或测试)可能会无缘无故地失败。 (2认同)

Pet*_*ter 23

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

在我的情况下,当我在特定包中运行所有单元测试时,在错误对话框中选择" " 后,该选项变为turnend .错误消息显示" 命令行太长.为了减少其长度,可以使用类路径文件.是否要为项目的所有运行配置启用类路径文件模式 "

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

我没有找到可以将其切换回来的对话框.我不得不编辑.iws手动档和切换dynamic.classpath选项回" ".