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

相关文章

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边