我得到以下異常:我該如何解決「不能投射」異常?
java.lang.ClassCastException: org.apache.commons.dbcp.DelegatingStatement cannot be cast to org.apache.tomcat.dbcp.dbcp.DelegatingStatement
optimise.database.ProdigyDB.doInsertSerial(ProdigyDB.java:139)
optimise.stock.CurrentRequest.writeRequest(CurrentRequest.java:145)
optimise.stock.SubmitOrderServlet.processRequest(SubmitOrderServlet.java:51)
optimise.stock.SubmitOrderServlet.doPost(SubmitOrderServlet.java:188)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
optimise.stock.AuthFilter.doFilter(AuthFilter.java:69)
的代碼行是這樣的:
serial = ((com.informix.jdbc.IfmxStatement) ((org.apache.tomcat.dbcp.dbcp.DelegatingStatement) statement).getDelegate()).getSerial();
完整的功能是這樣的:
public static int doInsertSerial(String sql) {
int serial = 0;
try {
Connection connection = getConnection();
java.sql.Statement statement = connection.createStatement();
statement.executeUpdate(sql);
serial = ((com.informix.jdbc.IfmxStatement)((org.apache.tomcat.dbcp.dbcp.DelegatingStatement) statement).getDelegate()).getSerial();
statement.close();
connection.close();
} catch (SQLException e) {
throw new RuntimeException("SQL Update Exception\n" + sql, e);
}
return serial;
}
這是神祕的,因爲相同的代碼在Unix SCO5服務器上部署時工作良好,但在Linux Red Hat服務器上出現錯誤。
任何幫助,非常感謝。
謝謝。
展望事情深一點,我看到DelegatingStatement類顯示錯誤:
公共類DelegatingStatement擴展AbandonedTrace實現聲明{
org.apache.commons.dbcp.DelegatingStatement是不抽象和不重寫抽象方法isPoolable()在java.sql.Statement
我不明白爲什麼會發生這種情況。
感謝您的意見。 –
或者如果你有更多時間,可以閱讀[here](http://javarevisited.blogspot.co.id/2012/12/how-to-solve-javalangclasscastexception-java.html#axzz50SF9zzij) –