Spring Boot 在使用taglib库的Sping Boot MVC应用程序中出现错误

enyaitl3  于 2024-01-06  发布在  Spring
关注(0)|答案(2)|浏览(176)

第一篇文章在这里。我试图将Sping Boot 应用程序更新到Java 20 / Tomcat 10.1
它使用第三方存储库。
当我运行应用程序时,我得到以下错误:

  1. Servlet.service() for servlet [jsp] threw exception
  2. java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.BodyTagSupport
  3. at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
  4. at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
  5. at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
  6. at java.base/java.lang.ClassLoader.defineClass1(Native Method)
  7. at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
  8. at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
  9. at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
  10. at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
  11. at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
  12. at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
  13. at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
  14. at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
  15. at java.base/java.lang.Class.forName0(Native Method)
  16. at java.base/java.lang.Class.forName(Class.java:496)
  17. at java.base/java.lang.Class.forName(Class.java:475)
  18. at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121)
  19. at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
  20. at java.base/java.lang.Class.forName0(Native Method)
  21. at java.base/java.lang.Class.forName(Class.java:496)
  22. at java.base/java.lang.Class.forName(Class.java:475)
  23. at org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader.loadFromParent(TomcatEmbeddedWebappClassLoader.java:113)
  24. at org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader.doLoadClass(TomcatEmbeddedWebappClassLoader.java:86)
  25. at org.springframework.boot.web.embedded.tomcat.TomcatEmbeddedWebappClassLoader.loadClass(TomcatEmbeddedWebappClassLoader.java:70)
  26. at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1165) ...

字符串
你知道我错过了什么吗?谢谢!
POM文件中包括以下内容:

  1. <dependency>
  2. <groupId>jakarta.servlet.jsp.jstl</groupId>
  3. <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.apache.tomcat.embed</groupId>
  7. <artifactId>tomcat-embed-jasper</artifactId>
  8. <scope>provided</scope>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.glassfish.web</groupId>
  12. <artifactId>jakarta.servlet.jsp.jstl</artifactId>
  13. </dependency>

lawou6xi

lawou6xi1#

看起来你缺少了一个库。你有没有试着用mvn dependency:tree命令检查你的项目中是否包含了这个库?https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api/2.0

0ve6wy6x

0ve6wy6x2#

我可以通过使用tomcat迁移工具来解决这个问题。
该工具的链接位于此页面:https://tomcat.apache.org/migration-10.html
该工具更新了所有的命名空间。在通过迁移工具运行第三方API后,生成的jar文件按预期工作。
它就像运行这个命令一样简单:

  1. java -jar jakartaee-migration-*-shaded.jar <source> <destination>

字符串

相关问题