报错

Error running 'WorkflowApplication' Error running WorkflowApplication. Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun.

解决

解决方法

原理简述

命令行示例

优点

缺点

JAR manifest

生成一个临时 JAR,其 MANIFEST.MF 中用 Class-Path 列出所有依赖

java -cp temp-classpath.jar MainClass

兼容性好(Java 1.0+),命令行极短

路径需相对,可能受工作目录影响

Classpath file

生成一个文本文件,列出所有类路径,用 @file 传参(Java 9+)

java @classpath.txt MainClass

使用绝对路径,更可靠,命令行短

需 Java 9+,依赖 @ 参数特性

原因

  • Windows: 通常限制在 8191 个字符左右(具体取决于系统版本和配置)。

  • Linux/macOS: 限制更大(通常是 128KB 或更高),但有时也会遇到问题。

当你在 IDE 中点击运行按钮时,IDE(如 IntelliJ IDEA)会在后台生成一个完整的 java 命令行来启动你的程序。这个命令行包含了:

  1. Java 虚拟机 (JVM) 的路径:例如 C:\Program Files\Java\jdk-17\bin\java.exe

  2. JVM 参数:例如 -Xms512m -Xmx2g

  3. 主类名:例如 com.ludan.workflow.WorkflowApplication

  4. 最重要的部分 —— 类路径 (-cp-classpath):(这是导致问题的核心。)

    • 对于一个 Spring Boot 项目,你的类路径可能包含数十甚至上百个 .jar 文件(你的代码编译后的 .class 文件、所有依赖库、Spring Boot 自带的库等)。

    • IDE 会把所有这些 .jar 文件的完整绝对路径拼接成一个超长的字符串,作为 -cp 参数的值。

 "C:\Program Files\Java\jdk-17\bin\java.exe" 
   -XX:TieredStopAtLevel=1 
   -Dspring.output.ansi.enabled=always 
   -Dcom.sun.management.jmxremote 
   -Dspring.jmx.enabled=true 
   -Dspring.liveBeansView.mbeanDomain 
   -Dspring.application.admin.enabled=true 
   -javaagent:"C:\Users\Alice\AppData\Local\JetBrains\IntelliJIdea2024.3\captureAgent\debugger-agent.jar" 
   -Dfile.encoding=UTF-8 
   -classpath 
     "D:\Projects\ludan-workflow\target\classes;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.2.0\spring-boot-starter-web-3.2.0.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot-starter\3.2.0\spring-boot-starter-3.2.0.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot\3.2.0\spring-boot-3.2.0.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.2.0\spring-boot-autoconfigure-3.2.0.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot-starter-logging\3.2.0\spring-boot-starter-logging-3.2.0.jar;
      C:\Users\Alice\.m2\repository\ch\qos\logback\logback-classic\1.4.11\logback-classic-1.4.11.jar;
      C:\Users\Alice\.m2\repository\ch\qos\logback\logback-core\1.4.11\logback-core-1.4.11.jar;
      C:\Users\Alice\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.21.1\log4j-to-slf4j-2.21.1.jar;
      C:\Users\Alice\.m2\repository\org\apache\logging\log4j\log4j-api\2.21.1\log4j-api-2.21.1.jar;
      C:\Users\Alice\.m2\repository\org\slf4j\jul-to-slf4j\2.0.9\jul-to-slf4j-2.0.9.jar;
      C:\Users\Alice\.m2\repository\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;
      C:\Users\Alice\.m2\repository\org\yaml\snakeyaml\2.2\snakeyaml-2.2.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.2.0\spring-boot-starter-json-3.2.0.jar;
      C:\Users\Alice\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.15.3\jackson-databind-2.15.3.jar;
      C:\Users\Alice\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.15.3\jackson-annotations-2.15.3.jar;
      C:\Users\Alice\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.15.3\jackson-core-2.15.3.jar;
      C:\Users\Alice\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.15.3\jackson-datatype-jsr310-2.15.3.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\3.2.0\spring-boot-starter-tomcat-3.2.0.jar;
      C:\Users\Alice\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.15\tomcat-embed-core-10.1.15.jar;
      C:\Users\Alice\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.15\tomcat-embed-el-10.1.15.jar;
      C:\Users\Alice\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.15\tomcat-embed-websocket-10.1.15.jar;
      C:\Users\Alice\.m2\repository\org\springframework\spring-web\6.1.1\spring-web-6.1.1.jar;
      C:\Users\Alice\.m2\repository\org\springframework\spring-beans\6.1.1\spring-beans-6.1.1.jar;
      C:\Users\Alice\.m2\repository\io\micrometer\micrometer-observation\1.12.0\micrometer-observation-1.12.0.jar;
      C:\Users\Alice\.m2\repository\io\micrometer\micrometer-commons\1.12.0\micrometer-commons-1.12.0.jar;
      C:\Users\Alice\.m2\repository\org\springframework\spring-webmvc\6.1.1\spring-webmvc-6.1.1.jar;
      C:\Users\Alice\.m2\repository\org\springframework\spring-aop\6.1.1\spring-aop-6.1.1.jar;
      C:\Users\Alice\.m2\repository\org\springframework\spring-context\6.1.1\spring-context-6.1.1.jar;
      C:\Users\Alice\.m2\repository\org\springframework\spring-expression\6.1.1\spring-expression-6.1.1.jar;
      C:\Users\Alice\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\3.0.3\mybatis-spring-boot-starter-3.0.3.jar;
      C:\Users\Alice\.m2\repository\org\mybatis\mybatis\3.5.14\mybatis-3.5.14.jar;
      C:\Users\Alice\.m2\repository\org\mybatis\mybatis-spring\3.0.3\mybatis-spring-3.0.3.jar;
      C:\Users\Alice\.m2\repository\mysql\mysql-connector-java\8.0.33\mysql-connector-java-8.0.33.jar;
      C:\Users\Alice\.m2\repository\com\google\protobuf\protobuf-java\3.21.9\protobuf-java-3.21.9.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot-starter-validation\3.2.0\spring-boot-starter-validation-3.2.0.jar;
      C:\Users\Alice\.m2\repository\org\hibernate\validator\hibernate-validator\8.0.1.Final\hibernate-validator-8.0.1.Final.jar;
      C:\Users\Alice\.m2\repository\jakarta\validation\jakarta.validation-api\3.0.2\jakarta.validation-api-3.0.2.jar;
      C:\Users\Alice\.m2\repository\org\jboss\logging\jboss-logging\3.5.3.Final\jboss-logging-3.5.3.Final.jar;
      C:\Users\Alice\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot-devtools\3.2.0\spring-boot-devtools-3.2.0.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot\3.2.0\spring-boot-3.2.0.jar;
      C:\Users\Alice\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.2.0\spring-boot-autoconfigure-3.2.0.jar;
      C:\Users\Alice\.m2\repository\org\springframework\spring-core\6.1.1\spring-core-6.1.1.jar;
      C:\Users\Alice\.m2\repository\org\springframework\spring-jcl\6.1.1\spring-jcl-6.1.1.jar;
      ..."  # 可能还有几十个 JAR
   com.ludan.workflow.WorkflowApplication


比较是偷走幸福的小偷