使用Idea运行项目在项目启动时报错:
Command line is too long. Shorten command line for XXXApplication or also for Spring Boot default configuration.
本来以为就是Command line is too long.的问题,结果只能用
问题分析
这种异常的出现是因为运行项目的指令过长引起的,在IDEA进行代码运行时加载了很多指令,这些指令拼接后的长度超出了系统的最大长度,当你的命令行长度超过 32768 个字符时,idea就会提示你使用短一点的命令行。
大家可以在运行项目是看一下console输出的第一行日志,一般就是你的运行conmand依次执行run–>edit configurations–>你的项目–>configuration–>Environment
但是解决每次都要单个配置,每次使用都要单个配置junit那么多岂不是要配四
但是在idea的.idea/workspace.xml中开启动态路径。这个方法不行,因为项目没有.idea文件
寻找半天发现问题解决(写在最后)
问题解决
方式一:
在idea的.idea/workspace.xml中开启动态路径。
在workspace.xml中的
<component name="PropertiesComponent">条目下添加属性
<property name="dynamic.classpath" value="true" />
可以使idea在执行通过动态路径去寻找项目路径,具体的实现原理,但是可以查看idea社区版的源码。
方式二:
在项目配置的运行参数配置中可以选择短命令行运行即Shorten command line
依次执行run–>edit configurations–>你的项目–>configuration–>Environment
在此条目下选择Shorten command line默认选择的是user-local default:none
这里有三个选项:
none
classpath file
jar manifest
此处可以选classpath file或者jar manifest运行项目也可解决此问题
写在最后
当改了配置后我们可以看一下我们的conmand line情况
D:\work\jdk1.8.0_101\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:57607,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:C:\Users\jonas\AppData\Local\JetBrains\IntelliJIdea2020.2\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath C:\Users\jonas\AppData\Local\Temp\classpath1326103414.jar com.xxx.service.order.admin.ServiceOrderAdminApplication
1
可以看到应用启动的时候是有加载jmx的,我这里把jmx关一下,看一下是否能正常运行。
运气不错,关闭jmx后,项目运行起来了,但是运行的conmand line的长度真的是让人感动,之前那还怀疑真的会有那么长的命令行么,还真的有,以下为默认的启动命令行。
可以看到默认的启动时会把所有依赖jar报的路径也加上,这个真的是可怕。
解决办法
因为项目是从svn下载的,导入时项目文件夹是在一个总文件夹中,而编写代码时只显示项目文件夹,
但是.idea在总文件夹中,要么
方法1.重新导入文件以项目文件夹导入idea,idea会自动创建.idea。但是这样又得重新配置项目相关project Structure,那岂不是要配四
方法2.看图
改即可。