SpringBoot 项目启动报错 Caused by: java.lang.NoSuchMethodError: freemarker.template.Configuration.<init>

本文解决了一个常见的SpringBoot项目启动错误,详细分析了由于Freemarker版本不兼容导致的问题,并提供了具体的解决方案,包括如何更换jar包版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 SpringBoot 项目启动报错:

第一次启动报错:

Caused by: java.lang.NoSuchMethodError: freemarker.template.Configuration.<init>(Lfreemarker/template/Version;)V
	at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.newConfiguration(FreeMarkerConfigurationFactory.java:328)
	at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.createConfiguration(FreeMarkerConfigurationFactory.java:258)
	at org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer.afterPropertiesSet(FreeMarkerConfigurer.java:120)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1767)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1704)
	... 16 common frames omitted

第二次启动报错: 

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call the method freemarker.template.Configuration.<init>(Lfreemarker/template/Version;)V but it does not exist. Its class, freemarker.template.Configuration, is available from the following locations:

    jar:file:/C:/Users/javam/.m2/repository/org/freemarker/freemarker/2.3.20/freemarker-2.3.20.jar!/freemarker/template/Configuration.class

It was loaded from the following location:

    file:/C:/Users/javam/.m2/repository/org/freemarker/freemarker/2.3.20/freemarker-2.3.20.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of freemarker.template.Configuration

由报错提示信息可知,加载 freemarker.jar 包  <init> 时没有发现。

解决方案:更换 jar 版本。

<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.20</version>
</dependency>

修改为:

<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.28</version>
</dependency>

项目启动正常!

 

 

 

 

### Spring Boot 启动时遇到 `java.lang.NoClassDefFoundError: javax.servlet.http.HttpServlet` 错误解决方案 当Spring Boot应用程序启动时报错 `Caused by java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet`,这通常意味着运行环境未能到所需的Servlet API类文件。此问题可能由多种因素引起。 #### Servlet API 版本兼容性问题 如果使用的Tomcat服务器版本与项目中的Servlet API版本不匹配,则可能导致此类错误。例如,某些高版本的Tomcat不再支持旧版Servlet API,反之亦然。对于这种情况,可以考虑调整所用的Tomcat版本来适配项目的Servlet API版本需求[^3]。 #### Maven配置不当引发的问题 在Maven构建工具管理下的Java Web应用里,有时会因为pom.xml中定义了不必要的作用域标签(`<scope>provided</scope>`),使得编译期依赖被排除在外而导致缺少必要的库文件。移除或注释掉这些特定的作用域声明能够帮助解决问题: ```xml <dependencies> <!-- javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <!--<scope>provided</scope>--> </dependency> </dependencies> ``` 上述操作允许将Servlet API作为默认依赖项加入到打包过程中去[^4]。 #### 使用Jakarta EE而非Javax EE 随着 Jakarta EE 的发展,部分API命名空间已从`javax.*`迁移到了`jakarta.*`,因此如果是基于较新标准开发的应用程序应当确保所有相关组件都遵循最新的命名约定。检查并更新所有的import语句以及任何其他地方可能出现的老化路径是非常重要的一步。 为了彻底排查和修复这个异常情况,建议按照以上几个方面逐一验证是否存在潜在冲突,并采取相应措施加以修正。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值