参考资料
1. IDEA启动项目:java: java.lang.IllegalArgumentException_liangsheng_g的博客-CSDN博客
2. java: java.lang.IllegalArgumentException: MALFORMED_或许挽风的博客-CSDN博客
3. mvn clean compile 编译正常,idea编译报错的问题_mvn idea:module报错_不如敲代码的博客-CSDN博客
错误场景:
idea 进行启动springboot项目(老项目,部分配置可能与最新springboot不同)时,编译构建build报错 java: java.lang.IllegalArgumentException: MALFORMED
但是:使用maven可以正常的编译或打包。打包后的程序也可以正常启动。
我的解决方案(不一定适合所有场景) :
idea配置 eclipse Compiler。
将 idea中 setting > Build,Execution,Deployment > Compile > java Compile > Use compiler 选择为 eclipse,点击apply完成。
运行环境:
jdk 1.8.0_131
idea IntelliJ IDEA 2023.1.2 (Community Edition) 社区版
maven 3.6.1
原因分析:
老项目从svn上拉取下来后,有部分文件是GBK 编码,强行修改为UTF-8编码,并删除其中的特殊字符后,启动编译异常, java: java.lang.IllegalArgumentException: MALFORMED
网上的部分3种解决方案 (尝试时,中间穿插了 清理idea缓存并重启操作)
1. 在Build, Execution, Deployment > Compiler add to the Shared build process VM options设置 -Djps.track.ap.dependencies=false (未解决自己的问题)
2. 路径包含中文,经过排查本项目未存在中文路径或者特殊字符。
3. 通过 先删除.iml文件,再通过maven执行 mvn idea:module 或者 mvn idea:idea 命令。(第一次确实成功了,但是后续修改了别的配置后,再启动,又开始报错)
测试可行的两种方案 :
1. 虽然javac编译异常,但是maven编译是可以的。那么可以通过配置idea,使用maven编译构建来代替 javac的构建(可能存在其他问题,例如关闭时,不能使用控制台的service关闭,需要手动kill 程序,临时可用), 勾选 maven > Runner > Delegate IDE build/run actions to Maven
2. 我使用的方案。java compile 不使用 javac编译构建,而选择 eclipse。这两种Compiler的区别可以必应或者百度。之后idea重新启动项目即可