Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

本文主要是介绍Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们需要引入包:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>ognl</groupId><artifactId>ognl</artifactId><version>3.2.10</version><scope>test</scope>
</dependency>

我们首先创建Thymeleaf模版:index.html

<!DOCTYPE html>
<html lang="en"  xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"><title>Title</title></head><body><h1 th:text="${title}">Hello World</h1></body>
</html>

然后我们再编写输出静态网页的方法:TstToHtml

package com.kingbal.tohtml.test;import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;/*** <b>Function: </b> todo** @program: TstToHtml* @Package: com.kingbal.tohtml.test* @author: songjianlin* @date: 2024/09/06* @version: 1.0* @Copyright: 2024 www.kingbal.net Inc. All rights reserved.*/
public class TstToHtml {public static void main(String[] args) throws IOException {ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();resolver.setPrefix("templates/");  //模板文件的所在目录resolver.setSuffix(".html"); //模板文件的后缀resolver.setTemplateMode(TemplateMode.HTML);//创建模板引擎对象TemplateEngine templateEngine = new TemplateEngine();//将加载器放入模板引擎对象中templateEngine.setTemplateResolver(resolver);String path = "D:\\git\\html";File file=new File(path);if(!file.exists()){file.mkdir();}FileWriter writer = new FileWriter(file.getPath() + "\\index.html");//创建Context对象(存放Model)Context context = new Context();context.setVariable("title", "测试列表");templateEngine.process("index", context, writer);}
}

当我们运行的时候出现错误,找了很多资料,说什么版本的问题,其实都试了没用

Exception in thread "main" java.lang.NoClassDefFoundError: ognl/PropertyAccessorat org.thymeleaf.standard.StandardDialect.getVariableExpressionEvaluator(StandardDialect.java:178)at org.thymeleaf.standard.StandardDialect.getExecutionAttributes(StandardDialect.java:392)at org.thymeleaf.DialectSetConfiguration.build(DialectSetConfiguration.java:263)at org.thymeleaf.EngineConfiguration.<init>(EngineConfiguration.java:123)at org.thymeleaf.TemplateEngine.initialize(TemplateEngine.java:341)at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1084)at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072)at com.kingbal.tohtml.test.TstToHtml.main(TstToHtml.java:50)
Caused by: java.lang.ClassNotFoundException: ognl.PropertyAccessorat java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)... 8 more 

解决这个问题主要是在 TemplateEngine 实例化的时候需要基于spring,所以在创建模版引擎的时候实例化 SpringTemplateEngine 即可

//创建模板引擎对象
TemplateEngine templateEngine = new SpringTemplateEngine();

这样就可以成功生成静态网页了~~~

这篇关于Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150464

相关文章

SpringBoot @Scheduled Cron表达式使用方式

《SpringBoot@ScheduledCron表达式使用方式》:本文主要介绍SpringBoot@ScheduledCron表达式使用方式,具有很好的参考价值,希望对大家有所帮助,如有... 目录Cron 表达式详解1. 表达式格式‌2. 特殊字符解析3. 常用示例‌4. 重点规则5. 动态与复杂场景‌

SpringCloud负载均衡spring-cloud-starter-loadbalancer解读

《SpringCloud负载均衡spring-cloud-starter-loadbalancer解读》:本文主要介绍SpringCloud负载均衡spring-cloud-starter-loa... 目录简述主要特点使用负载均衡算法1. 轮询负载均衡策略(Round Robin)2. 随机负载均衡策略(

java String.join()的使用小结

《javaString.join()的使用小结》String.join()是Java8引入的一个实用方法,用于将多个字符串按照指定分隔符连接成一个字符串,本文主要介绍了javaString.join... 目录1. 方法定义2. 基本用法2.1 拼接多个字符串2.2 拼接集合中的字符串3. 使用场景和示例3

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

解读spring.factories文件配置详情

《解读spring.factories文件配置详情》:本文主要介绍解读spring.factories文件配置详情,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用场景作用内部原理机制SPI机制Spring Factories 实现原理用法及配置spring.f

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码