2015-04-23 78 views
0

我的jar文件不能在項目文件夾外工作,除非我將它放在與lib文件夾相同的目錄中。當我運行命令行的jar我得到這個:Jar文件無法在項目文件夾外工作

C:\Users\Computer>java -jar SG.jar 
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/hiber 
nate/cfg/AnnotationConfiguration 
     at view.PessoaView.<init>(PessoaView.java:27) 
     at view.PessoaView$7.run(PessoaView.java:291) 
     at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
     at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
     at java.awt.EventQueue.access$500(Unknown Source) 
     at java.awt.EventQueue$3.run(Unknown Source) 
     at java.awt.EventQueue$3.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour 
ce) 
     at java.awt.EventQueue.dispatchEvent(Unknown Source) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
     at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
     at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
     at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
     at java.awt.EventDispatchThread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.hibernate.cfg.AnnotationConfigu 
ration 
     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) 
     ... 16 more 

與其他「窗口」同樣的,因爲我的應用程序有許多菜單itens。我已經提取了jar文件,只是爲了檢查並且沒有lib文件夾。我相信它應該。 休眠需要的jar文件和所有其他需要的文件都在lib文件夾中。有人可以幫忙嗎?謝謝.. 這裏是一個類似問題的鏈接:

why doesn't my jar file run outside netbeans?

+1

*「除非我把它放在與lib文件夾相同的目錄「* - 是的,這就是它的工作原理。你的jar文件很可能有一個清單條目,它聲明所有依賴的jar的位置(class-path) – MadProgrammer

+1

你可以看看類似[One-Jar](http://one-jar.sourceforge)的東西。淨/) – MadProgrammer

+0

我會檢查你說的,謝謝。 – Rodrigo

回答

0

你的問題是你的jar不包括它需要執行的依賴。

你的程序需要hibernate jars。你可以使用maven編譯你當前jar的所有依賴關係。

試試這個: Build jar with dependancies

0

Jar文件不能包含任何其他jar文件。 一些像螞蟻這樣的工具,可以包裝幾個罐子裏面,你可以看看螞蟻。 另一種方式的java -jar

0

使用java命令運行期間使用java -cp運行,而不是您可以直接指定需要的庫類路徑中直接指定類路徑的庫/