IDEA 10.5命令行过长

162

在Maven项目中运行测试用例时(在Windows上):

运行TestApp.readParameter时出错:命令行太长。为了缩短长度,可以使用classpath文件。您想要为项目的所有运行配置启用classpath文件模式吗?启用

set .iws

<property name="dynamic.classpath" value="true" />

如何解决这个问题?


1
这个回答解决了你的问题吗?如何在IntelliJ中为整个项目配置“缩短命令行”方法 - Maulzey
14个回答

334

在Intellij中,进入“编辑配置”(运行 -> 编辑配置),在弹出的配置选项卡中,在“缩短命令行”一行中选择选项“classpath文件”/“@argFiles(Java 9+)”,下拉菜单中的最后一个选项。对我有用的是这个修复。


16
从Intellij顶部菜单中使用“Run => Edit Configurations”来访问它。 - Vijai
8
在最新的Idea 2020.3中,似乎不再有此选项。 - elect
3
我正在使用 IntelliJ IDEA Ultimate 2020.3。这个选项是可用的(并且解决了我的问题)。 - Nathan
27
如果你没有看到“缩短命令行”选项,点击“修改选项”并勾选“缩短命令行”。 - cnmuc
2
它仍然可以在2022.1.2上运行。只是路径有点不同。您需要在“构建和运行”标题附近“修改选项”。 - rios0rios0
显示剩余4条评论

90

在运行/调试配置中设置缩短命令行:JAR清单解决了这个问题。

输入图像描述


7
如果菜单中没有看到这个选项,请按 "修改选项 v Alt+M" 下拉菜单,勾选 "缩短命令行" 选项以显示它(IDEA CE 2020.3)。 - simno
1
“JAR清单”(而不是Classpath)对我起作用了。IntelliJ IDEA 2022.1.1 CE。 - datsb

56

从您的项目根文件夹打开.idea/workspace.xml文件,转到该部分

<component name="PropertiesComponent">

并添加以下内容:

<property name="dynamic.classpath" value="true" />

感谢提供详细信息,这真的很有效。我尝试并测试了一些在IntelliJ中的错误,我猜测它没有正确地选择,这个方法有所帮助。 - Doogle
最佳答案!这很有帮助,因为它只需要进行一次配置。在“运行>配置”中使用“JAR清单”解决方案需要针对每个要运行的测试进行配置,这并不好。 - Juliano Suman Curti
1
在IntelliJ 2022中,将"dynamic.classpath": "true"添加到propertiesComponent字符串中。 - burdk

30

我在Intelij community 2021.1 windows上完成了这个操作,效果很好 :)

  1. 在编辑配置菜单中,点击修改选项

  1. 然后选择缩短命令行

  1. 选择JAR清单选项,应用并运行

图片描述


11
请参见什么是dynamic.classpath标志?(IntelliJ项目设置)。如果您需要避免动态类路径,请修改依赖关系,将库、项目文件和JDK移动到路径较短的目录中。
编辑:您在评论中提供的错误链接是有意义的,但是当运行测试时,即使使用动态类路径,命令行超过了操作系统限制,这可能是因为有许多命令行参数或选项不能被IDEA缩短,因为IDEA只能解决长类路径问题。我们无法对此进行任何处理,您应该修改向应用程序传递参数的方式,以使命令行长度在限制范围内。
从IDEA的角度来看,我们将改善这种情况的处理方式。当已经使用动态类路径时,将不再显示此对话框,并且您将收到有关长命令行的另一个错误消息。我已提交了一个新问题来解决这种情况。

我明白了。当我将dynamic.classpath设置为true时,命令行仍然太长。 - qinmiao
在这种情况下,这是一个应该报告到 http://youtrack.jetbrains.net/issues/IDEA 的错误。 - CrazyCoder
现在,您可以在默认的JUnit配置下将“缩短命令行”设置为“JAR清单”。 - thijsraets
我在Linux中没有看到过这个问题(或者可能与Java 9有关)。然而,我不会开始对项目进行重构。更准确地说,我没有被允许这样做。你有其他的建议吗? - patrik

4

enter image description here

我将命令行缩短从无到JAR主清单,它可以工作,希望有用。

2
有人能解释一下为什么这个有效吗?缩短命令行jar清单是什么意思? - Adam Hughes

1
在我的情况下,解决方法是更新运行/调试配置,并在缩短命令行中选择下一个选项classpath文件enter image description here

1

我使用的是Intelli J。我按照以下步骤操作,现在可以运行我的测试。

  1. 在编辑器顶部菜单中,进入“编辑配置”。
  2. 在JUnits选项下,点击“修改选项”。
  3. 在Java选项下,选择“缩短命令”,并选择“JAR Manifest选项”。

这解决了我的问题。


1

我曾经长时间苦苦挣扎于这个错误,但其他答案都没有帮到我。

解决问题的方法是在Gradle的pitest配置中添加以下行:

useClasspathFile = true

现在build.gradle文件中有这样一条记录:

 pitest {
    threads = 4

    //adds dependency to org.pitest:pitest-junit5-plugin and sets "testPlugin" to "junit5"
    junit5PluginVersion = '0.12'

    useClasspathFile = true    <------------------------------

    targetClasses = ["com.example.service.*"]

    if (project.name in ['no-need-to-mutate-module']) {
        failWhenNoMutations = false
    }
}

这是帮助我解决问题的链接

0
在我使用的版本2020.2中,答案中提到的选项并不可用。我点击了消息中显示的“启用”链接,这解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接