我正在尝试在程序下运行(使用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构建路径中。
请为此问题提出一些解决方案。
答案 0 :(得分:0)
首先,您应该检查Dom4j JAR文件实际上是否包含该类。我怀疑它确实如此,但只需几秒钟就可以“grep”jar -tf Dom4j-1.6.1.jar
的输出......
假设该类在JAR中,那么问题是JAR文件需要位于(运行时)类路径以及(编译时)构建路径上的 。运行单元测试时会发生此异常。因此,请检查对单元测试有效的类路径。
我没有使用Maven,因为我在开发服务器上开发它,我们不使用Maven ......
我不相信这是个好主意。你不可能在Eclipse中遇到这个问题,无论是否在Eclipse中。逻辑让我觉得有些循环。你为什么不想在开发服务器上使用Maven?
更新 - 显然您的开发服务器未使用Maven的原因是其他人控制它。但即使这样也让我感到奇怪。为什么您的客户(?)或托管公司(?)想要阻止它?