0
我面對這個異常的結果集,而遷移到JDK1.7java.lang.ClassCastException取使用了Spring JDBC模板升級後JDK 1.7
java.lang.ClassCastException: com.sun.rowset。而獲取使用了Spring JDBC模板一個結果providers.RIOptimisticProvider不能轉換到 javax.sql.rowset.spi.SyncProvider中
。
這裏是例子:
private String[] findDetailsByName(String name) {
String[] retVal = null;
SqlRowSet res = springJdbcTemplate.queryForRowSet("select * from table where param = (?)",
new Object[] { name}); // ClassCast exception ocurring here
while(res.next()){
retVal = new String[2];
retVal[0] = res.getString("COLUMN_1").trim();
retVal[1] = res.getString("COLUMN_2").trim();
}
return retVal;
}
同一例子方法在JDK 1.6工作正常,但拋出ClassCastException異常而遷移到JDK1.7。
堆棧跟蹤:
Caused by: java.lang.ClassCastException: com.sun.rowset.providers.RIOptimisticProvider cannot be cast to javax.sql.rowset.spi.SyncProvider
at javax.sql.rowset.spi.SyncFactory.getInstance(SyncFactory.java:605)
at com.sun.rowset.CachedRowSetImpl.<init>(CachedRowSetImpl.java:360)
at com.sun.rowset.RowSetFactoryImpl.createCachedRowSet(RowSetFactoryImpl.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.util.ReflectionUtils.invokeJdbcMethod(ReflectionUtils.java:224)
at org.springframework.util.ReflectionUtils.invokeJdbcMethod(ReflectionUtils.java:209)
at org.springframework.jdbc.core.SqlRowSetResultSetExtractor.newCachedRowSet(SqlRowSetResultSetExtractor.java:101)
at org.springframework.jdbc.core.SqlRowSetResultSetExtractor.createSqlRowSet(SqlRowSetResultSetExtractor.java:83)
at org.springframework.jdbc.core.SqlRowSetResultSetExtractor.extractData(SqlRowSetResultSetExtractor.java:67)
at org.springframework.jdbc.core.SqlRowSetResultSetExtractor.extractData(SqlRowSetResultSetExtractor.java:1)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:649)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:637)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:666)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:674)
at org.springframework.jdbc.core.JdbcTemplate.queryForRowSet(JdbcTemplate.java:805)
請將所有代碼放入\'' –
@Kyle Luke,在我對解析的初步分析過程中,我從pom.xml中刪除了rowset-1.0.1-patched.jar並解決了此錯誤。這可能對某些人有幫助。 – skk
更好的格式,更好的標題。 –