在前一篇https://developer.aliyun.com/article/1179009?spm=a2c6h.13148508.setting.14.2fd54f0e6B84bI撰写字符串过长的解决方案的文章里写到jdk8的源码如果遇到字符串过长的问题,可以通过修改Java编译器为Eclipse解决,但是jdk17的版本的源码却报如下的错误:
java: java.lang.IllegalArgumentException: source level should be in '1.1'...'1.8','9'...'14' (or '5.0'..'14.0'): 17
上述报错翻译成中文就是:源码级别应该是1.1-1.8,9-14(或者5-14)。大概明白了就是这个IDEA绑定的这个eclipse编译器不支持JDK14以上的源码级别。这一点没有找到文档说明,从IDEA的官方文档关于编译器的部分也没找到说明
但是仔细推敲发现了一个问题,就是如果你不乐意使用idea绑定的eclispe可以使用ECJ batch compiler tool。(谁会不乐意使用你大名鼎鼎的idea绑定的编译器呢,这不遇到问题了吗)。从这一点我就猜测,就是IDEA绑定的Eclipse编译器是不支持jdk高版本的源码级别的。于是就从eclipse编译器入手,看看如何解决了,IDEA里面提供了这么一个配置,就是在如下的Setting页面
于是我就从eclipse的官方找到了这个传说中的ECJ batch compiler tool即上图红色框的ecj-4.27.jar。
下载这个3M的小jar,然后配置到idea中,果然好使。字符串过长的问题解决。有的同学会说,你为啥要写那么长的字符串,可以使用拼接和StringBuilder去处理,这些方案都是可以的,我就是想找找配置上的方案。哈哈。