代码拉取完成,页面将自动刷新
咱门beetl 3.14.1.RELEASE版本虽然支持springboot3了,但是antlr4-runtime 为4.9.3版本,没法使用spring data jpa啊,spring data jpa中 hibernate 的 antlr4-runtime为4.10.1版本。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
@林林七 已经支持,可以使用如下
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl-springboot-starter-jdk17</artifactId>
<version>3.15.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
</exclusion>
</exclusions>
</dependency>
@闲.大赋(李家智) 是否考虑在springboot3.x 提高 antlr4-runtime 的版本呢?
beetl仍然是与jpa的高版本antlr4冲突,我采用下面的办法,将它的版本降低到符合beetl:
<!-- https://mvnrepository.com/artifact/com.ibeetl/beetl-springboot-starter-jdk17 -->
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl-springboot-starter-jdk17</artifactId>
<version>3.15.14.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>4.11.1</version>
</dependency>
兼容springboot3.x的jpa,最后的解决方案,其他一切没变,利用java的加载机制,重写 org.beetl.core.engine.DefaultTemplateEngine
类的初始化方法:
ininAntlrRuntime
中增加:||version.startsWith("4.13")
if(version.startsWith("4.10")||version.startsWith("4.11")||version.startsWith("4.12")||version.startsWith("4.13")){
parserBuilder = ObjectUtil.tryInstance("org.beetl.core.engine.BeetlAntlrParser411",classLoader);
}else if(version.startsWith("4.9")||version.startsWith("4.8")||version.startsWith("4.7")){
parserBuilder = ObjectUtil.tryInstance("org.beetl.core.engine.BeetlAntlrParser49",classLoader);
}else if(version.startsWith("4.5")||version.startsWith("4.6")) {
parserBuilder = ObjectUtil.tryInstance("org.beetl.core.engine.BeetlAntlrParser45",classLoader);
}
if(parserBuilder==null){
throw new IllegalArgumentException("不支持的antlr版本:"+version+",联系xiandafu@126.con 定制,或者参考源码antlr4.5-support");
}
@闲.大赋(李家智) 作者手动判断 antlr 的版本号,感觉有点奇怪。建议改成下面的:
// 伪代码 version=4.13.0
if(Integer.valueOf(version.split("\\.")[1])>=10){
parserBuilder = ObjectUtil.tryInstance("org.beetl.core.engine.BeetlAntlrParser411",classLoader);
}
登录 后才可以发表评论