IDEA使用java开发时一个奇葩问题

使用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.看图

改即可。

猜你喜欢

转载自blog.csdn.net/qq_27246521/article/details/128913122
今日推荐