Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ClassCastException:org.apache.commons.dbcp.BasicDataSource不能强制转换为org.apache.commons.dbcp.BasicDataSource_Java_Tomcat_Connection Pooling_Apache Commons Dbcp_Jdbc Pool - Fatal编程技术网

java.lang.ClassCastException:org.apache.commons.dbcp.BasicDataSource不能强制转换为org.apache.commons.dbcp.BasicDataSource

java.lang.ClassCastException:org.apache.commons.dbcp.BasicDataSource不能强制转换为org.apache.commons.dbcp.BasicDataSource,java,tomcat,connection-pooling,apache-commons-dbcp,jdbc-pool,Java,Tomcat,Connection Pooling,Apache Commons Dbcp,Jdbc Pool,我在尝试检索Tomcat全局资源下配置的数据源时遇到了这个奇怪的异常 java.lang.ClassCastException: org.apache.commons.dbcp.BasicDataSource cannot be cast to org.apache.commons.dbcp.BasicDataSource org.apache.jsp.Monitor_jsp._jspService(Monitor_jsp.java:53) org.apache.jasper.r

我在尝试检索Tomcat全局资源下配置的数据源时遇到了这个奇怪的异常

java.lang.ClassCastException: org.apache.commons.dbcp.BasicDataSource cannot be cast to org.apache.commons.dbcp.BasicDataSource
    org.apache.jsp.Monitor_jsp._jspService(Monitor_jsp.java:53)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
这就是我的Monitor.jsp的样子

<%@ page import="org.apache.commons.dbcp.BasicDataSource" %>
<%@ page import="com.dixons.myapp.db.DataSourceHelper" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Monitor page</title>
</head>
<body>
<%
    BasicDataSource ds = (BasicDataSource) DataSourceHelper.getDbDataSource();
    out.println(ds.getNumActive() + " " + ds.getNumIdle());
%>
</body>
</html>

监视器页面
我知道什么是类例外。但我不明白为什么Java认为这两个类是不同的,即使它们的名称相同,并且在同一个包中


我的应用程序可以很好地处理转换为javax.sql.DataSource的对象。但是我想将它转换为这个监视器页面的org.apache.commons.dbcp.BasicDataSource,这样我就可以监视我的数据库资源了。

这是因为同一个类由两个不同的类加载器加载

java.lang.ClassCastException: org.apache.commons.dbcp.BasicDataSource cannot be cast to org.apache.commons.dbcp.BasicDataSource
    org.apache.jsp.Monitor_jsp._jspService(Monitor_jsp.java:53)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
一个可以是
WebappClassLoader
loader,另一个可以是
sun.misc.Launcher$AppClassLoader
。 有关更多详细信息,请参见和