java.lang.NoClassDefFoundError:org / dom4j / DocumentException:在BuildPath中添加了Dom4j-1.6.1.jar

时间:2014-07-31 10:51:25

标签: java sql oracle hibernate

我正在尝试在程序下运行(使用hibernate 3,IDE = Eclipse,我没有使用Maven,因为我在开发服务器上开发它,我们不使用Maven):

package test;

import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;

public class TestDAO {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Configuration cfg = new Configuration();
        cfg.configure();
        SessionFactory sf = cfg.buildSessionFactory();
        Session ses = sf.openSession();
        Query query  = ses.createSQLQuery("select my_seq.nextval as num from dual").addScalar("num", Hibernate.LONG);
        Long key=(Long)query.uniqueResult();
        System.out.println("here is the next valfrom sequcne : "+key);
        ses.close();
        sf.close();

    }

}

我正在使用oracle sequence(my_seq)来获取hibernate中的下一个值:

select my_seq.nextval as num from dual

我收到以下错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentException
    at test.TestDAO.main(TestDAO.java:16)
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 1 more

我已经在我的java构建路径中添加了Dom4j-1.6.1.jar文件。 但我仍然得到错误:java.lang.ClassNotFoundException:org.dom4j.DocumentException

大多数谷歌解决方案都是将Dom4j-1.6.1.jar添加到我已经完成的java构建路径中。

请为此问题提出一些解决方案。

1 个答案:

答案 0 :(得分:0)

首先,您应该检查Dom4j JAR文件实际上是否包含该类。我怀疑它确实如此,但只需几秒钟就可以“grep”jar -tf Dom4j-1.6.1.jar的输出......

假设该类在JAR中,那么问题是JAR文件需要位于(运行时)类路径以及(编译时)构建路径上的 。运行单元测试时会发生此异常。因此,请检查对单元测试有效的类路径。


  

我没有使用Maven,因为我在开发服务器上开发它,我们不使用Maven ......

我不相信这是个好主意。你不可能在Eclipse中遇到这个问题,无论是否在Eclipse中。逻辑让我觉得有些循环。你为什么不想在开发服务器上使用Maven?

更新 - 显然您的开发服务器未使用Maven的原因是其他人控制它。但即使这样也让我感到奇怪。为什么您的客户(?)或托管公司(?)想要阻止它?