我用Eclipse写了一个项目。Struts1.x + Hibernate3.0(Hibernate双向一对一) 用Junit测试时出现javax.exe应用程序错误。但在WEB测试中没有问题(服务器Tomcat5.0)。在开始的时候,用Junit测试保存(Save)、加载(Load)都可以。后来写了一个删除(Delete)测试,Junit就出现javax.exe应用程序错误。程序被终止。但在Eclipse中其它的工程中(以前写过的工程),运行Junit测试没问题。请高手指教 谢谢!代码如下:/**
  * Person Bean
  * 
  */
public class Person {

// ID
private String id;

// Name
private String name;

// ID Card
private IdCard idCard; public IdCard getIdCard() {
return idCard;
} public void setIdCard(IdCard idCard) {
this.idCard = idCard;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}}
-------------------------------------------------------------------------------------------------------// Person.hbm.xml 映射文件
<hibernate-mapping package="com.idcard.webapp.persistent.model"> <class name="Person" table="t_person">

<id name="id">
<generator class="foreign">
<param name="property">idCard</param>
</generator>
</id>
<property name="name">
<column name="name" sql-type="varchar(20)" not-null="true"/>
</property>
<one-to-one name="idCard" constrained="true" lazy="false"/>

</class>

</hibernate-mapping>
-------------------------------------------------------------------------------------------------------/**
 * 
 * IdCard Bean
 *
 */
public class IdCard {

// ID
private String id;

// Card Name
private String cardNo;

// Person
private Person person; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getCardNo() {
return cardNo;
} public void setCardNo(String cardNo) {
this.cardNo = cardNo;
} public Person getPerson() {
return person;
} public void setPerson(Person person) {
this.person = person;
}}
-------------------------------------------------------------------------------------------------------// IdCard.hbm.xml 映射文件
<hibernate-mapping package="com.idcard.webapp.persistent.model"> <class name="IdCard" table="t_idcard">

<id name="id" type="string">
<column name="id" sql-type="varchar(32)" not-null="true"/>
<generator class="uuid"/>
</id>
<property name="cardNo">
<column name="card_no" sql-type="varchar(18)" not-null="true" unique="true"/>
</property>
<one-to-one name="person"/>

</class>

</hibernate-mapping>
-------------------------------------------------------------------------------------------------------/**
 *
 * hibernate.cfg.xml 映射文件
 *
 */
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/IdentityCard</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">999999</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>

<mapping resource="com/idcard/webapp/persistent/model/Person.hbm.xml"/>
<mapping resource="com/idcard/webapp/persistent/model/IdCard.hbm.xml"/>
</session-factory>
</hibernate-configuration>
-------------------------------------------------------------------------------------------------------
/**
 *
 * HibernateUtils.java (Hibernate工具类)
 *
 */
public class HibernateUtils {

// Session Factory
private static SessionFactory sessionFactory;

static{
try{
Configuration cfg = new Configuration().configure("com/idcard/webapp/persistent/cfg/hibernate.cfg.xml");
sessionFactory = cfg.buildSessionFactory();
}catch(Exception e){
e.printStackTrace();
}
}

/**
 * Get Session Factory
 * 
 * @return
 */
public static SessionFactory getSessionFactory(){
return sessionFactory;
}

/**
 * Get Session
 * 
 * @return
 */
public static Session getSession(){
return getSessionFactory().openSession();
}

/**
 * Find Object Info
 * 
 * @param hql
 * @return
 */
public static List find(String hql){
List list=null;
Session session=null;
try{
session = getSession();
session.beginTransaction();
list = session.createQuery(hql).list();
session.beginTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return list;
}

/**
 * Save Object
 * 
 * @param obj
 * @return
 */
public static boolean save(Object obj){
Session session=null;
try{
session = getSession();
session.beginTransaction();
session.save(obj);
session.beginTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return false;
}

/**
 * Update Object
 * 
 * @param obj
 * @return
 */
public static boolean update(Object obj){
Session session=null;
try{
session = getSession();
session.beginTransaction();
session.update(obj);
session.beginTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return false;
}

/**
 * Delete Object
 * 
 * @param obj
 * @return
 */
public static boolean delete(Object obj){
Session session=null;
try{
session = getSession();
session.beginTransaction();
session.delete(obj);
session.beginTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
closeSession(session);
}
return false;
}

/**
 * Close Session
 * 
 * @param session
 */
public static void closeSession(Session session){
if(session != null){
if(session.isOpen()){
session.close();
}
}
}}
-------------------------------------------------------------------------------------------------------
/*
 *
 * Junit 测试类
 *
 */
public class IdCardTest extends TestCase{

// Test Save Person
public void testSavePerson(){
if(PersonManager.save(getPerson())){
System.out.println("-------------Save Person Successfully!---------------");
}
}

// Load Person
public void testLoadPerson(){
Session session=null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
Person person = (Person)session.load(Person.class, "402881e4226f5e4601226f5e48370001");
System.out.println("Person Name: "+ person.getName());
System.out.println("Card NO: "+ person.getIdCard().getCardNo());
session.beginTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}

// Load IdCard
public void testLoadIdCard(){
Session session=null;
try {
session = HibernateUtils.getSession();
IdCard idCard = (IdCard)session.load(IdCard.class, "402881e42274ae8a012274ae8bf00001");
System.out.println("Card ID: "+ idCard.getCardNo());
System.out.println("Person Name: "+ idCard.getPerson().getName());
session.beginTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}

// Find PersonById
public void testPersionById(){
Person person = PersonManager.findPersonById("402881e4226f5e4601226f5e48370001");
System.out.println("Person Name: "+ person.getName());
System.out.println("Card NO: "+ person.getIdCard().getCardNo());
}

// Delete person
public void testFindPersonAll(){
List<Person> list = HibernateUtils.find("Form person");
System.out.println("Person Name: "+ list.get(0).getName());
System.out.println("Card NO: "+ list.get(0).getIdCard().getCardNo());
}

/**
 * 
 * ====================================================================================== 
 * 
 */

// Get Person
private Person getPerson(){

IdCard idCard = new IdCard();
idCard.setCardNo("210803197903251016");

Person person = new Person();
person.setName("aaa");
person.setIdCard(idCard);

return person;
}

}
-------------------------------------------------------------------------------------------------------
以前这些方法都好用的,现在都不好用了。
请高手指教 谢谢!