Jar文件在项目文件夹之外不起作用

时间:2015-04-23 04:30:10

标签: java jar

我的jar文件在项目文件夹之外不起作用,除非我将它放在与lib文件夹相同的目录中。当我从命令行运行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

与其他“windows”相同,因为我的应用程序有很多菜单。我已经解压缩了jar文件,只是为了检查并且那里没有lib文件夹。我相信它应该。 hibernate所需的jar文件和所有其他所需的jar文件都在lib文件夹中。有人可以帮忙吗?谢谢.. 以下是类似问题的链接:

why doesn't my jar file run outside netbeans?

3 个答案:

答案 0 :(得分:0)

您的问题是您的jar不包含执行所需的依赖项。

您的程序需要休​​眠jar。您可以使用maven编译当前jar的所有依赖项。

试试这个: Build jar with dependancies

答案 1 :(得分:0)

Jar文件不能包含任何其他jar文件。 像蚂蚁这样的工具,可以在里面装几个罐子,你可以看看蚂蚁。 另一种方法是在使用java -cp而不是java -jar

运行期间直接指定库的类路径

答案 2 :(得分:0)

您可以在使用java -cp /

运行期间直接指定所需库的类路径