springcloud中spring boot下访问jsp产生的若干问题及我自己的解决办法

Spring Boot默认不支持JSP,添加依赖后出现'Failed to scan...'错误。降低Tomcat版本至8.0.32解决部分问题,但接着遇到NoClassDefFoundError。最终通过添加tomcat-util依赖并调整Idea配置,成功运行并访问JSP页面。

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

因为springboot默认是不支持jsp的,在网上找了点资料添加了依赖如下:

<!-- servlet依赖. -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

<!-- tomcat的支持. -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency> 
因为是maven子项目,父项目依赖是这样式的:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.2.RELEASE</version>
</parent>
<dependencyManagement>
    <dependencies>
	<dependency>
	    <groupId>org.springframework.cloud</groupId>
	    <artifactId>spring-cloud-dependencies</artifactId>
	    <version>Camden.SR3</version>
	    <type>pom</type>
	    <scope>import</scope>
	</dependency>
    </dependencies>
</dependencyManagement>
然后配置文件application.yml加了如下代码:
spring:
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp

然后我运行程序的时候会报一个Failed to scan [file:/xx/xx/xx.jar] from classloader hierarchy的错,但是tomcat依然可以启动并且也能从浏览器访问到相应的jsp页面。

我就去百度了一下,没有得到什么实际的答案,只知道大概是jar包冲突之类的,折腾了很久也没有解决。后来去谷歌了一下发现是springboot的问题,基本上1.4版本以后使用jsp的都报了相应的错误。解决办法也很简单,降低tomcat到8.0.36的版本即可。

<properties>
    <tomcat.version>8.0.36</tomcat.version>
</properties>

然后我就去试了一下发现还是不行,刚好看到有个哥们说降到8.0.32版本。我试了一下发现可行,但是又报另一个错tomcat启动错误:nested exception is java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory,这下子连tomcat也无法启动了。

我又去搜了一下解决办法,添加一个tomcat-util依赖如下:

<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-util</artifactId>
  <version><!-- version from tomcat-embed-core --></version>
  <scope>runtime</scope>
</dependency>

然后程序完美运行。

结果我又作死搞了一个idea版本,发现不报错,但是无法访问。后来看到了这个帖子,完美的解决了我的问题。

点击打开链接

做个记录,以防下次再遇到这样的问题折腾自己。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值