gpt4 book ai didi

java - ClassCastException:org.postgresql.jdbc4.Jdbc4Connection 无法转换为 org.postgresql.jdbc4.Jdbc4Connection

转载 作者:行者123 更新时间:2023-11-29 14:07:07 25 4
gpt4 key购买 nike

我想从 JBOSS AS7 中的 PosgreSQL 连接获取 PGConnection(数据源 postgresql-9.0-801.jdbc4.jar)

我在使用 (WrappedConnection)connection 时遇到强制转换异常。所以现在我使用反射(JDK 1.7):

private static PGConnection getPGConnction(Connection connection) throws SQLException {
if(connection instanceof PGConnection) {
return (PGConnection)connection;
}
try {
Class[] parms = null;
Method method =(connection.getClass()).getMethod("getUnderlyingConnection", parms);
return (PGConnection) jdbc4Conn;
} catch ...

并捕获异常

java.lang.ClassCastException: org.postgresql.jdbc4.Jdbc4Connection cannot be cast to org.postgresql.jdbc4.Jdbc4Connection

是同一个类!!!怎么可能?

最佳答案

当一个类不能转换为自身时,if 意味着你有 2 个副本由不同的类加载器加载。在 Web 应用程序中,如果您在应用程序本身和应用程序服务器的库中都有 JDBC 驱动程序 jar,则很容易发生这种情况。或者,在 .ear 打包的情况下,在 war/WEB-INF/libear/lib 中。确保类路径上只有一个 jar,您将摆脱错误。您可以在启动 Java 时传递 -verbose:class 以获取有关从何处加载类的更多信息。顺便说一句,您的代码中的反射点是什么?不能正常调用 getUnderlyingConnection 吗?

关于java - ClassCastException:org.postgresql.jdbc4.Jdbc4Connection 无法转换为 org.postgresql.jdbc4.Jdbc4Connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25473706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com