SWT,包装罐

时间:2011-03-28 16:39:31

标签: java jar swt executable-jar

我为我的java应用程序制作了简单的jar(使用SWT构建)。 在netbeans中,它开始正常,因为它需要。 但当我用 java -jar [jarName] 开始时,我有这样的错误:

java -jar jarname.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
    at roxed.Main.main(Main.java:15)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Composite
    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 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    ... 1 more

我已从http://eclipse.org/swt(linux build)下载SWT,解压缩jar并将此文件夹添加到项目中。

有人可以说,为什么我不能从IDE执行它?

4 个答案:

答案 0 :(得分:2)

在类路径中添加swt jar。具体而言,org.eclipse.swt_x.x.xorg.eclipse.swt.win32.win32.x86_x.x.x。其中x是版本号,您将不得不寻找 linux 版本,而不是我所展示的win32。

答案 1 :(得分:1)

<强>已更新

swt.jar需要添加到META-INF/MANIFEST.MF文件的Class-Path条目中。

您可以在此link上阅读有关Java Launcher选项的更多信息。

答案 2 :(得分:1)

发现...... 但不完全是。 将项目移植到eclipse,添加了所有jar-s。 并且只是导出为可执行jar。 它有效......

感谢大家的参与。

答案 3 :(得分:1)

这是真的 java -cp libraries / swt.jar -jar jarname.jar 会生成相同的错误。

这是因为在使用-jar时,Java不使用-classpath值

您必须在jar 包内的清单中将库添加到Class-Path 部分。

例如:

Manifest-Version: 1.0
Main-Class: irisRecognition
Class-Path: ../libs/swt64.jar ../libs/bij.jar

您可以在回答here

中找到更详细的说明