【JDK21】运行异常 NoClassDefFoundError: Compil

【JDK21】运行异常 NoClassDefFoundError: java/lang/Compiler

java.lang.NoClassDefFoundError: java/lang/Compiler
at com.jfinal.template.expr.ast.MethodKit.(MethodKit.java:48)

issues#I8300K

评论区

JFinal

2023-09-20 18:07

应该是 JDK 21 中没有了 Compiler 这个类,一会我去除掉,见下面这的代码:
static {
Class[] cs = {..., Compiler.class, ...}
}

着急用吗? 着急我就发一个新版本

杜福忠

2023-09-20 21:21

@JFinal 不着急,新项目开发中,用的17。看21发布了,想着直接升21也没关系。本地去除Compiler.class后,运行正常~

JFinal

2023-09-21 00:56

@杜福忠 极好极好

有了 JDK 17 的多行字符串支持, sql 不用写在外部文件中了,直接写到 java 代码中也很好维护。

即便还想写在外部文件中,也可以将 SQL 抽取到独立的 java 代码中的多行字符串,例如:
public interface UserSql {
String find = """
select * from user where id = #para(0)
""";
}

然后用的时候: dao.templateByString(UserSql.find).find();

aifei 已将模板 sql 提升到最优先位置,不用 templateByString ,用更便捷的方式使用 sql 模板

zzutligang

2023-09-21 09:47

@杜福忠 都升到jdk21了啊!我的项目用到第三方的jar太多了。一直不敢升,主要是怕第三方的jar不支持这么高的jdk版本。观望中。高版本的jdk,就这个多行字符串的特性是最吸引人的。

pzy338

2023-11-26 10:15

@zzutligang jdk13不就支持多行字符串了吗?

badouyuren

2024-01-26 16:45

@JFinal 最近写个小程序,使用jdk21也发现这个问题了

杜福忠

2024-01-27 08:56

@badouyuren 升级最新版本即可

badouyuren

2024-02-02 21:05

热门反馈

扫码入社