2012-10-05 53 views
1

我試圖導出一個使用hibernate的java獨立類。這是一個非常簡單的讀取/插入程序。我堅持這個錯誤NoClassDefFoundError休眠條件導出jar

C:\Users\Admin\Desktop>java -jar ImportDatiMeteo2.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/criteri 
on/Criterion 
     at openplan.openergy.standalone.ImportDati.main(ImportDati.java:24) 
Caused by: java.lang.ClassNotFoundException: org.hibernate.criterion.Criterion 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 1 more 

我在想這可能是一個清單文件問題,所以我檢查。這對我來說似乎沒問題。

Manifest-Version: 1.0 
Class-Path: lib/antlr-2.7.6rc1.jar lib/asm-attrs.jar lib/asm.jar 
lib/c3p0-0.8.5.2.jar lib/cglib-2.1.3.jar lib/cleanimports.jar 
lib/commons-collections-2.1.1.jar lib/commons-logging-1.0.4.jar lib/concurrent-1.3.2.jar 
lib/connector.jar lib/dom4j-1.6.1.jar lib/ehcache-1.1.jar lib/hibernate3.jar 
lib/jaas.jar lib/jacc-1_0-fr.jar lib/jaxen-1.1-beta-7.jar 
lib/jdbc2_0-stdext.jar lib/jgroups-2.2.7.jar lib/jta.jar lib/log4j-1.2.11.jar 
lib/log4j-1.2.9.jar lib/oscache-2.1.jar lib/proxool-0.8.3.jar 
lib/swarmcache-1.0rc2.jar lib/xerces-2.6.2.jar lib/xml-apis.jar 
Created-By: 1.6.0_21 (Sun Microsystems Inc.) 
Main-Class: openplan.openergy.standalone.ImportDati 

在我所有的Eclipse項目的正常工作,沒有人知道問題出在哪裏?

+0

你需要重新將Hibernate jar包裝到你的'ImportDatiMeteo2.jar' –

+0

你能更具體嗎? – Medioman92

+0

我沒有足夠的細節,關於你想要什麼以及你做了什麼。通常JAR是一個檔案,其中所有需要的'* .class'文件都是以壓縮格式存放的。您可以像7-zip一樣檢查jar內容。你應該在你的jar中有'org/hibernate/criterion/Criterion.class',以便java classloader可以找到它。你的jar包裏有這個文件嗎?如果你沒有,那麼你的jar不是獨立的,它需要hibernate jars在classpath中,在java命令行或系統環境中設置。 –

回答

0

您需要添加這些庫在類路徑中,你是從命令行中運行它:

C:\> java -classpath <referenced-jars> -jar ImportDatiMeteo2.jar 

在MyEclipse中所有項目的正常工作,沒有人知道問題出在哪裏?

- >因爲Eclipse會照顧你的類路徑並在類路徑中添加庫。

+0

但是如果在命令行中指定它....什麼是清單文件? 這是我第一次看到這個錯誤...與其他項目我只使用清單文件 – Medioman92

+0

@ Medioman92:我會給類路徑中的圖書館,因爲他們的路徑可能會改變。使用你的方法將它們寫入jar中的清單將會很麻煩。我不知道我們是否可以提供清單中的類路徑。我所知道的是我們可以給主體上一個清單。 –

0

請在您的Eclipse導出對話框中檢查Library handling選項。在我身邊,它可以在選擇Extract required libraries into generated JAR的情況下正常工作。