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

关于javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/hibernate
我写了一个类ExportDB,作用是根据映射文件在数据库中删表或建表。
package com.fhe.db;

import java.io.File;

import org.hibernate.*;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;

import com.fhe.util.HibernateUtil;
public class ExportDB {

Session s = HibernateUtil.getSession();
Configuration cfg = null;
Transaction t = s.beginTransaction();
/*
 * 根据实体类与映射文件建表
 */
@Test
public void createTable() {
// 默认读取hibernate.cfg.xml文件
cfg = new Configuration().configure(new File("src/hibernate.cfg.xml"));
// 生成并输出sql到文件(当前目录)和数据库
SchemaExport export = new SchemaExport(cfg);
try {
t.begin();// 事务开始
// 第一个为True就是把DDL语句输出到控制台,第二个为True就是根据持久类和映射文件先执行删除再执行创建操作
export.setFormat(true).setOutputFile("D:\\sql.sql")
.create(false, false);
} catch (Exception e) {
System.out.print("出错啦1");
e.printStackTrace();
}
try {
t.commit();// 提交事务
s.close();// 关闭连接
} catch (Exception e2) {
e2.printStackTrace();
}
}
/*
 * 删表
 */
public void dropTable(){
// 默认读取hibernate.cfg.xml文件
cfg = new Configuration().configure(new File("src/hibernate.cfg.xml"));
// 生成并输出sql到文件(当前目录)和数据库
SchemaExport export = new SchemaExport(cfg);
try {
t.begin();// 事务开始
// 第一个为True就是把DDL语句输出到控制台,第二个为True就是根据持久类和映射文件执行删除数据库架构操作
export.drop(false, true);
} catch (Exception e3) {
e3.printStackTrace();
}
try {
t.commit();// 提交事务
s.close();// 关闭连接
} catch (Exception e4) {
e4.printStackTrace();
}

}
}

接下来写一个main方法调用这个类
public static void main(String[] args) {
// TODO Auto-generated method stub
ExportDB ed = new ExportDB();
ed.dropTable();
}

是调用成功的了。
但是我在一个jsp页面中调用之:

<jsp:useBean id="ed2" class="com.fhe.db.ExportDB"></jsp:useBean>
<%ed2.createTable(); %>

则一直报错:

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/hibernate/Session
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:403)
org.apache.jasper.servlet.JspServlet.service(JspServlet.jav