Command line is too long
发布时间:2024-02-11 11:05:05

目录

一、遇到的问题

二、使用环境

三、问题分析

四、解决方案

1、解决方式一

2、解决方式二


一、遇到的问题

上周五,我要改造一个之前从未接触过的 SpringBoot 项目。我用 git 拉下代码后,试图使用 Idea 运行它。但是,Idea 在运行时抛出了一个问题:Error running 'Application': Command line is too long. Shorten command line for Application or also for Application default configuration?

该问题一般会在新项目或者从未接触过的项目上出现。虽然网上有很多的解决方案,但很多解决方案都已经过时。并且这些方案也没有讲清问题的原因,所以我打算先用一个简单的 SpringBoot 项目模拟出该问题,再解决它,这样就很容易分析该问题。我觉得有必要写一篇文章记录这个过程,也可以帮助到遇到该问题的开发者。

二、使用环境

我使用的操作系统是 Windows, Idea 的版本是:IntelliJ IDEA 2020.3.1 (Community Edition)

如果你遇到了该问题,先看一下你使用的 Idea 是多少版本的。2017.3 及以后的版本都可以使用该方法解决问题,如果你是 2017.3 之前的版本,我建议你升级 Idea ,尽量使用新版本的 Idea 。

三、问题分析

我先问一个问题,在 Idea 中点击运行按钮后,Idea 会调用哪些命令?

当我们点击运行程序的按钮,Idea 会先调用 javac 命令编译程序,再调用 java 命令运行程序。

现在,分析一下错误:Error running 'Application': Command line is too long 。这个错误说的很明确,运行程序时报错,命令行太长了,而运行程序的命令就是上面说的 java 命令。最后的结论是,运行 java 的命令行太长。一般来说,操作系统有命令行长度限制,超过限制的长度就会执行失败。

下面来证明我的结论,在 Idea 中运行程序,控制台中打印的第一行日志如下图中红框所示:

该行日志就是使用 java 命令运行程序,点开后可以看到后面跟有 -javaagent、classpath 等参数。如果 classpath 中包含的 jar 包过多,可能导致命令行过长。

四、解决方案

既然知道了是 java 命令行太长,导致运行程序失败。只要缩短命令行就可以解决该问题,Idea 2017.3 之后的版本提供了缩短命令行的配置。如下有两种解决方式,方式一和方式二的原理一样,都是配置缩短命令行。方式一和方式二的区别在于方式一是按步骤配置,方式二是快速配置。

1、解决方式一

先打开 Run/Debug Configurations 面板。再点击 Modify options ,选择 Shorten command line ,再选择 JAR manifest 或者 classpath file 就可以解决问题。

示意图如下所示:

2、解决方式二

如果你的 Idea 弹出报错信息如下图所示,直接点击蓝色的 JAR manifest 或者 classpath file 可以快速配置,再次运行程序就不会再报错了。