前言
最近遇到两个问题,都是关于IDEA的(言外之意和代码无关),很是让我“生气”呀(关键是浪费时间)。在痛定思痛后,我决定写此专栏,来专门分享/记录使用IntelliJ IDEA过程中遇到的那些奇葩问题和解决方案,以帮助你缩短日常排错时间,这么一思考好像还功德无量呢😄。
IntelliJ IDEA作为Java开发者中最为流行的开发工具(eclipse粉勿喷),熟练掌握它(包括排雷)对提升编码效率能有显著提升。但工具毕竟是工具,这么长时间使用IDEA以来,每个人或多或少的都遇到过关于IDEA七七八八、奇奇怪怪的问题,这些与代码舞棍,但它很容易偷走你的时间,半天又更或者是一天之久。
说明:千万不要忽视对IDEA的研究,因为把它玩熟练了它就相当于你的物理外挂
本专栏内容并非 IDEA教程,而是着眼于分享IDEA使用过程中,那些我遇到(或者大家遇到)的但又不是能够很快速解决,总之就是比较棘手的问题的汇总,有一种错题本的意思有木有。总之就是希望它能够帮助到大家迅速定位or解决问题,避免不必要的时间浪费,毕竟咱们的主业还是敲代码嘛~
版本约定
本文内容若没做特殊说明,均基于以下版本:
- IntelliJ IDEA:2020.1.2旗舰版
正文
使用IDEA这么久,虽然之前时不时地的跟IDEA问题“交过手”,但真正促使我决定写此专栏的原因还是源自于前两天使用IDEA启动Spring Boot程序时的这个报错:
Error running 'Application': Command line is too long. Shorten command line for Application or also for Spring Boot default configuration.
说实话这个错误我前所未见,看起来还蛮有意思,因此决定研究一番。这不,把研究结果分享给大家,信息共享。
为了解释好这个问题,我们得先来做些功课,知晓写概念。
控制台首行路径
在IDEA里,你每次启动一个main函数时,控制台第一行输出的“日志”称作为:控制台首行路径。这里,我运行一个最最最简单的程序,看看它长啥样,程序如下:
public class Application { public static void main(String[] args) { System.out.println("Hello world"); } }
运行程序,控制台输出如下截图:
相信小伙伴每天都能看见它但大概率不会注意到它,我也不例外。你想不到的是,恰巧这行“日志”就成为了本文今天的主角,会围绕它来展阐述。
特别说明:如果你是用外置tomcat驱动应用启动的话效果不是这样子的。因为它使用的是tomcat的脚本来启动,所以首行日志形如这样:D:\developer\apache-tomcat-9.0.34\bin\catalina.bat run
首行路径内容
知道了什么叫首行路径,那么它的内容才是我们要关心的。如上截图中,细心的你会发现最后是...省略号,因此内容绝不止你现在看到的那么简单。你可以鼠标点击一下,展开全部内容,截图如下:
这一行实在太长了,无法横向截图全部展示出来,因此我把它复制出来放在文本编辑器中查看:
这个截图是一行哦(只是我在文本编辑器了自动折行了而已),仍旧不能看到全部内容,因为字数真的太多了,总字数统计如下:
仅仅一行,字数超过26000个。咋舌吧:第一行控制台“日志”竟然输出了超过2.6w个字符。从内容结构上来看,这是一个command命令:调用java.exe程序启动一个java进程的命令。
为何启动抛错Command line is too long
99.99%的情况下,你可以在IDEA里正常启动你的应用,即使首行路径很长很长。但是直到当我启动我的这个Spring Boot应用时,弹出红色提示:
直接禁止了我的running运行。提示内容中文释义为:运行“Application”时出错:命令行太长。缩短应用程序或Spring Boot默认配置的命令行。我相信如果你也是第一次见到此case,表情和我一样是这样的:
main方法都启不动了,那还得了。遇到这种情况,我只能使用百度大法(谷歌大法)了:
一看能搜出这么多结果,我也就不慌了,按照“教程”很容易的把问题解决了。另外呢,通过此次搜索到的结果聊两句题外话:
- 虽然Result Count不少,但是我发现实质上内容几乎一毛一样,真乃天下文章一大抄
- 访问量并不代表文章质量高,只是它刚好命中了关键字而已,比如标题党
我得出如此感悟,也是促使我写本文的原因之一。因为A哥的文章一贯如此,是有些B格的。接下来以点带面,把这部分内容帮大家展开展开,解决问题并非最终目的,而是为了:记得牢,能装x,一切为了加薪。