2012-10-25 18 views
2

那么,我用eclipse将我的应用程序导出到JAR中,但是现在每当我尝试运行它时,就会得到:“发生了Java异常”。当我尝试通过命令行运行它时,它说:为什么我将应用程序导出到Jar后出现“发生Java异常”?

C:\Users\Arturas>java -jar D:\Dropbox\EclipseWorkspace\Exports\Dantracio_skaiciu 
oklis3.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widge 
ts/Composite 
     at java.lang.Class.getDeclaredMethods0(Native Method) 
     at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
     at java.lang.Class.getMethod0(Unknown Source) 
     at java.lang.Class.getMethod(Unknown Source) 
     at sun.launcher.LauncherHelper.getMainMethod(Unknown Source) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Composite 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     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) 
     ... 6 more 

C:\Users\Arturas> 

对此的任何解决方案?我只是讨厌java这个...它从来没有在台式机上工作,当你想要...对不起,我真的从这个压力,我反应过度...

任何想法可能导致这种情况?我也不在其他电脑上工作。现在它使用Java 1.7。该应用程序在Eclipse上运行完美。

+1

当您创建JAR时,它只包含您编写的类,而不包含任何第三方依赖项。 (与SWT类似)。在IDE外部运行项目时,需要使用“java.exe”的“-cp”参数制作一个启动程序,该启动程序在类路径中包含这些依赖关系。 – millimoose

+0

FWIW,Eclipse *应该*能够生成某种类型的分发包,其中包含应用程序需要的所有'.jar'文件。 – millimoose

+0

@millimoose Uhm,我认为这就是我需要的,我需要它将所有东西装入一个罐子(这就是为什么我选择导出到罐子的原因?)。那么怎么做呢? –

回答

3

你需要得到你的依赖关系。看起来你依赖于swt,这不是Java核心语言的一部分。你需要获得你所依赖的所有第三方jar,并将它们包含在你的classpath中。它在eclipse上完美运行,因为eclipse负责为你设置类路径。

可以作为documentation描述设置类路径在您的清单文件,也可能包括脚本启动运行的jar时将使用-cp命令你的应用程序,或者你可以使用的东西,将一切包装成一个怪物罐子像this question的解决方案。

+1

怪物jar回答也省略了一些更新的解决方案,如[Jar Jar Links](http://code.google.com/p/jarjar/)或Maven ['shade'插件](http://maven.apache .ORG /插件/行家遮阳帘插件/) – millimoose

相关问题