IDEA 2020.3启动项目:java: java.lang.IllegalArgumentException


一、现象

IDEA启动springboot项目,提示java: java.lang.IllegalArgumentException,没有多余的信息,百度之后都是让修改idea的Java compiler,但是我全都设置的Java8,所以没头绪。

二、解决方法

1.问题进一步描述

谷歌搜了一下,发现Jetbrains的官网有人提这个问题,大致浏览了下,描述和我的问题一致。再看描述产生这个问题的条件:简单描述下,就是IDEA 2020.3版本会复现这个问题,如果升级到2020.4就没有该问题,而且后面的添加提问是说2020.3.1.RC版本也会有这个问题
链接在这儿:https://youtrack.jetbrains.com/issue/IDEA-256707

What steps will reproduce the issue?

1. Upgrade to 2020.3 invalidate caches and restart
2. Build Project (Ctlr+F9)
3. Build output shows java: java.lang.IllegalArgumentException without any clue what's wrong  // 注意这一句,这个IllegalArgumentException和其他的不同,所以百度搜到的解决方法不能解决该问题
4. Downgrade to 2020.2.4 invalidate caches and restart
5. Build Project (Ctrl+F9)
6. Build succeeds

java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)

Stack trace:
2020-12-02 18:03:52,635 [   4497]   INFO - s.incremental.java.JavaBuilder - java.lang.IllegalArgumentException
java.lang.RuntimeException: java.lang.IllegalArgumentException
        at com.sun.tools.javac.main.Main.compile(Main.java:553)
        at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
        at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
        at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:231)
        at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:498)
        at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:350)
        at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:274)
        at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:228)
        at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1441)
        at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1100)
        at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1224)
        at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:1066)
        at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:832)
        at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:419)
        at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:183)
        at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:132)
        at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:302)
        at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:132)
        at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:219)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

2. 解决方法

  1. 更换IDEA的版本,改成非2020.3和非2020.3.1.RC
  2. 不修改IDEA版本,通过配置参数让IDEA跳过一些检查(具体的可以看上面发的链接里的解释,不过好像不是很推荐)。修改参数的方法如下:在Build, Execution, Deployment > Compiler add to the Shared build process VM options设置
-Djps.track.ap.dependencies=false

截图如下
在这里插入图片描述

总结

  1. idea也是有bug的
  2. 百度不好用的时候,别忘了试试Google
  • 33
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: java.lang.IllegalArgumentException: malformed是Java编译时出现的错误信息,意思是参数错误或格式错误。其中的"malformed"表示参数或格式严重错误,导致编译无法正常进行。 这个错误通常发生在编译过程中,原因有很多种可能。可能是代码中使用了错误的参数,例如传入了错误类型的参数或格式不正确的参数;也可能是代码本身存在语法错误,导致编译器无法将代码转换为可执行的字节码;还有可能是在编译过程中缺少必要的依赖或引用了不存在的类等。 要解决这个错误,我们可以根据具体的错误提示,逐步排查和修复问题。首先,我们需要仔细查看错误信息中提供的具体的错误类型和位置。然后,我们可以检查对应的代码位置,确认是否存在参数或格式错误,并根据需要进行相应的调整。此外,还可以检查相关的依赖是否正确引入,并确保引用的类存在和可用。 综上所述,当编译Java代码时出现"java.lang.IllegalArgumentException: malformed"错误时,我们需要仔细检查代码中的参数和格式是否有错误,并根据具体错误提示进行相应的修复。同时,还应检查相关的依赖和类是否都正确引入和可用。通过逐步排查和修复问题,我们可以解决这个编译错误,使代码顺利通过编译并运行。 ### 回答2: 当您在IDEA中编译Java项目时,可能会遇到java.lang.IllegalArgumentException: Malformed的异常。这个异常通常表示您的代码出现了错误,导致编译失败。 在Java中,IllegalArgumentException是RuntimeException的子类,它表示向方法传递了一个不合法或无效的参数。这意味着您的代码中存在一个方法调用,并传递了一个不符合方法要求的参数值。 常见的导致IllegalArgumentException异常的原因可能有以下几种: 1. 参数为空:某个方法要求传入参数,但您传递了一个空引用,例如传递了一个null值给一个不能接受null的方法。 2. 参数类型不匹配:某个方法期望接收一个特定类型的参数,但您传递了一个不匹配的参数类型,例如传递一个字符串给一个期望接收整数的方法。 3. 参数超出范围:某个方法要求传递一个限定范围内的参数值,但您传递的值超出了这个范围,例如传递一个负数给一个只能接受正数的方法。 要解决这个问题,您可以检查引发异常的代码行,确保传递的参数是合法的。可以检查参数是否为空,是否符合方法预期的类型和范围。如果参数不合法,您需要修正参数使其符合要求,或者将其更改为合适的值。 如果您无法找到导致异常的具体代码行,可以使用调试工具来逐步跟踪代码并查找问题所在。 总的来说,当您在IDEA中编译Java代码时遇到java.lang.IllegalArgumentException: Malformed异常时,意味着您的代码中存在一个或多个参数不合法的方法调用。您需要检查并修复这些代码行,以保证传递的参数符合方法要求。 ### 回答3: 这个错误信息是Java编译错误的一种。它指示了在编译过程中发生了一个异常,异常的类型是`IllegalArgumentException`,并且异常消息为"malformed",即格式错误。 这个错误通常意味着在编译代码时,Java编译器检测到了一个不符合语法规则或格式规范的部分。有几种可能的原因可以导致这个错误: 1. 语法错误:代码中可能存在拼写错误、缺少分号、括号未匹配等语法错误,这些错误会导致编译器无法正常解析代码。 2. 参数错误:某个方法或构造函数的参数传递错误,比如传递了一个不符合要求的参数类型或格式。 3. 格式错误:代码中使用了不符合规范的格式,例如错误的命名、缩进不正确等。 为了解决这个问题,我们可以进行以下步骤: 1. 仔细检查代码,确保没有语法错误和拼写错误。可以使用集成开发环境(IDE)提供的代码编辑功能来检查和修复这些问题。 2. 检查方法或构造函数的参数传递,确保传递的参数类型和格式符合要求。 3. 确保代码的格式正确,包括正确的缩进、命名规范等。 如果以上步骤都没有解决问题,可以尝试搜索相关错误信息,参考其他开发者的经验和解决方案。此外,可以尝试使用调试工具来逐步执行代码并查找错误的根源。 总之,"java.lang.IllegalArgumentException: malformed"这个错误是Java编译器在编译代码过程中发现了异常,原因可能是语法错误、参数错误或格式错误。通过仔细检查代码、调试和参考解决方案,我们可以解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值