2016-01-27 37 views
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) 
+0

請將所有代碼放入\'' –

+0

@Kyle Luke,在我對解析的初步分析過程中,我從pom.xml中刪除了rowset-1.0.1-patched.jar並解決了此錯誤。這可能對某些人有幫助。 – skk

+0

更好的格式,更好的標題。 –

回答

0

pom.xmlrowset-1.0.1-patched.jar刪除引用解決了這個錯誤。