如何在IntelliJ中为整个项目配置“缩短命令行”方法

258
当我运行测试时,出现错误“命令行太长”。 如果在运行/调试配置的特定方法或类中将“缩短命令行”方法设置为“JAR清单”,则可以解决此问题,但是如何为整个项目设置它,或者是否有IDE全局设置可用?
11个回答

293

在您的 .idea 文件夹内,更改 workspace.xml 文件

添加

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

  <component name="PropertiesComponent">
.
.
.
  </component>

例子

 <component name="PropertiesComponent">
    <property name="project.structure.last.edited" value="Project" />
    <property name="project.structure.proportion" value="0.0" />
    <property name="project.structure.side.proportion" value="0.0" />
    <property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
    <property name="dynamic.classpath" value="true" />
  </component>
如果你没有看到任何一个,请随意添加它。
 <component name="PropertiesComponent">
    <property name="dynamic.classpath" value="true" />
  </component>

社区编辑:这个解决方案似乎在较新版本的IDE中不起作用,现在PropertiesComponent的格式已经变了。如果是这种情况,那么这个答案应该可以解决。



5
如果你的Intellij版本没有图形用户界面方法来设置这个,那么这种方法就适用。我想指出的是,这可能是.idea/workspace.xml文件或<project_name>.iws文件。如果你没有.idea文件夹,在你的项目中搜索.iws文件。 - Dennis Bartlett
1
谢谢!它在Android Studio 4.0中对我有效。 - DungPhan
2
这对我没有起作用,尽管显然对其他人有效,所以不确定为什么。 - Daniel Wilson
如果找不到 .iws 文件或 /.idea 目录,您也可以在 <project_name>.iml 文件中进行此操作。 - Alok Mishra

171

Intellij 2018.2.5

运行 => 编辑配置 => 在左侧选择 Node => 展开环境 => 简化命令行选项 => 选择 Classpath 文件或JAR清单

显示运行/调试配置中命令行选项的屏幕截图


22
每次运行之前未执行过的单个测试时,必须重新设置此解决方案。 - 4ndro1d
5
您可以在设置的配置类型模板上设置此项,这样就不需要为每个新的测试/配置设置它。有关详细信息,请参阅已接受的答案。 - Dennis Bartlett
1
是的!这对我的Android测试非常有效!谢谢! - sud007

127
你可以通过更改默认的JUnit运行/调试配置模板来设置一个默认的方式来缩短命令行,并将其用作进一步配置的模板。然后,您在项目中创建的所有新的运行/调试配置都将使用相同的选项。
这里是关于可配置命令行缩短选项的相关博客文章

9
在新版本中无法使用,因为选项已被删除。现在应该如何操作? - Mulgard
56
对我有效的设置是在从错误消息链接点击出现的对话框中选择“类路径文件”选项。这在“缩短命令行”设置下。 - havoc1
3
选择“类路径文件”选项可行,我建议在回答更新版本的IDE时包括此选项。 - MrKumar
2
@MrKumar 我收到了以下信息: 'CommandLineWrapper' 不适用于在 Java 9+ 上启动应用程序。 如果运行配置使用 "classpath file",请将其更改为 "@argfile"。 否则,请联系支持。 - Tym Pollack
3
嗨,@TymPollack,我也遇到了这个问题,并通过转到“运行”->“编辑配置”来解决它。在“缩短命令行”部分,我选择了用户本地选项,然后它就可以工作了。你也可以试试看。我使用的是AS 4.2版本。 - Beast77
3
在 IJ 2021 版本中,“缩短命令行”选项默认处于隐藏状态。若要查看它,请选择“修改选项”->勾选“缩短命令行”。 - kabeen

69

最新2020版本默认没有缩短命令行选项,我们需要从配置中添加该选项。

运行 > 编辑配置 > 选择相应的运行配置 并点击修改选项以在UI界面中添加缩短命令行配置。 输入图像描述

选择缩短命令行选项 输入图像描述

现在从缩短命令行选项中选择jar清单 输入图像描述


4
因为所有答案都是旧版本,所以我找不到任何解决方案!这真的帮了我很多!非常感谢! - AntoCode
对于最新版本的IntelliJ,这个有效。 - Gautham

53

感谢Rajesh Goel在Android Studio中的指引:

运行 > 编辑配置...

输入图像描述

选择一个测试(最好选择一个父测试类),并将缩短命令行:选项设置为classpath文件。然后点击确认(或应用,确认)。

输入图像描述


12
shorten命令行中使用JAR清单选项对我很有帮助。 - Andrew Chelix
当我升级到Android Studio 4.2时,我遇到了与@AndrewChelix提到的相同问题,“使用JAR清单选项”可以解决这个问题。 - handlerFive

18

如果您使用 JDK 版本是 9 或以上,应选择

Run(运行) > Edit Configurations...(编辑配置) > 选择JUnit(单元测试)模板。

然后,在下面的图片中选择@argfile (Java 9+)

输入图像说明文字

如果您看不到Shorten command line(缩短命令行),则只需单击如下所示的Modify options(修改选项)菜单,并选择Shorten command line(缩短命令行)即可。

输入图像说明文字

请尝试一下。祝好运!


9
<component name="PropertiesComponent"> 标签下,将 <property name="dynamic.classpath" value="true" /> 添加到 .idea/workspace.xml 文件中。对我有用。

1
在缩短的命令行配置中设置classpath文件似乎在我的端上不起作用,但是这个方法可以。 - Mike Diente

5
请按照以下步骤操作:在缩短命令行类别中的下拉列表中选择"classpath.file"选项。 enter image description here 请查看以下图片,以获取更详细的操作流程: enter image description here

这绝对是更好的答案。不需要手动更改配置文件。谢谢 - undefined

2
在我的情况下,错误是:
Error running 'MasterFileGenerator':
Command line is too long. Shorten command line for StagingFileGenerator or also for Application default configuration.

解决方法是切换到"运行/调试配置",并将 user-local default: none - java [options] className [args] 切换为 JAR manifest - java -cp classpath.jar className [args]enter image description here

0

要使其持久化:

  1. 打开Intellj
  2. ctrl + shift + n
  3. 输入workspace.xml
  4. 找到名为“PropertiesComponent”的组件标签
  5. a)如果有属性列表,请添加

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

b)如果有keyToString json,请在地图中添加新行:

&quot;dynamic.classpath&quot;: &quot;true&quot; (请记住上面一行中的逗号)

  1. (可选)如果您想立即在另一个项目中启用此配置,请重新启动intellj

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