java.lang.ClassCastException [duplicate]的原因是什么

sqxo8psd  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(135)

此问题已在此处有答案

Servlet 5.0 JAR throws compile error on javax.servlet.* but Servlet 4.0 JAR does not(3个答案)
3天前关闭。
我得到classcastexception,而提交的形式这里是我的web.xml的servletMap代码,请帮助什么是错误的,为什么这个异常来
异常:严重:为servlet分配异常[register] java.lang.ClassCastException:类servlets.RegisterServlet不能强制转换为类jakarta.servlet.Servlet(servlets.RegisterServlet在loader org.apache. Catalina .loader. ParallelWebappClassLoader@1d131e1b;的未命名模块中jakarta.servlet.Servlet在加载器java.net的未命名模块中。URLClassLoader@7106e68e)
Web.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">

  <display-name>RegistrationServlet</display-name>
`your text`
   <servlet>
    <servlet-name>register</servlet-name>

    <servlet-class>servlets.RegisterServlet</servlet-class>
   </servlet>
  
   <servlet-mapping>
    <servlet-name>register</servlet-name>

    <url-pattern>/RegisterServlet</url-pattern>

   </servlet-mapping>
  
  
   <session-config>
  
    <session-timeout>
        30      
    </session-timeout>

   </session-config>
  
</web-app>

我试图清理项目和服务器,以及检查构建路径和所有相应的库,但我仍然得到这个怎么办,有人能帮助吗??

q35jwt9p

q35jwt9p1#

您遇到的java.lang.ClassCastException是由于类装入器之间的冲突造成的。您的servlets.RegisterServlet类似乎由org.apache.catalina.loader.ParallelWebappClassLoader加载,而jakarta.servlet.Servlet类由java.net.URLClassLoader加载。
此问题可能是由于应用程序的类路径中存在同一个库(在本例中为Servlet API)的多个版本而引起的。

相关问题