java.lang.NoClassDefFoundError: javax/sql/rowset/Joinable at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) 。。。。。。 部分代码如下: public OracleCachedRowSet getRowSet() throws SQLException, NamingException { PreparedStatement ps = null; ResultSet resultSet = null; Connection conn = null; try { conn = CommonTool.getConnection(this.dbName); this.setParamList(); //this.handleWildcard(); ps = conn.prepareStatement(sqlString); this.assignParamValue(ps); ps.setQueryTimeout(60 * 10); resultSet = ps.executeQuery(); rowSet = new OracleCachedRowSet(); rowSet.populate(resultSet); } catch (SQLException ex) { log.error("SQLException while query: " + ex); throw ex; } finally { if (ps != null) {