日期:2014-05-17  浏览次数:20810 次

java.lang.NoClassDefFoundError: javax/sql/rowset/Joinable
我用eclipse开发了一个程序在本机上可以运行,但打包后部署在resin上面就不能执行,报错:

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) {

  ps.close();

  }
  if (resultSet != null) {

  resultSet.close();

  }
  if (conn != null) {

  conn.close();
  }
  }

  return rowSet;
  }
我检查过所有的jar包都已经包含进去了的,但不知道为什么就用不了。请大家指教下~~


------解决方案--------------------
探讨
我用eclipse开发了一个程序在本机上可以运行,但打包后部署在resin上面就不能执行,报错:

java.lang.NoClassDefFoundError: javax/sql/rowset/Joinable
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClas……

------解决方案--------------------
出现这种问题
1,一般是classloader的问题,一般重启下服务,就可避免该问题。
2,也有可能是别的关联的包的缺失,也会照成这问题
3,如果是jdbc之类的包没有引用的话,会报ClassNotFount的错

你可以看看是不是 有个rowset.jar没有引用,我记得用oracle的cacherowset的话,貌似有个这个包。