SWT, упаковочная банка - PullRequest
       15

SWT, упаковочная банка

0 голосов
/ 28 марта 2011

Я сделал простой jar для моего java-приложения (сборка с 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

Я загрузил SWT из http://eclipse.org/swt (сборка linux), распаковал jar и добавил эту папку в проект.

Может кто-нибудь сказать, почему я не могу выполнить его не из IDE?

Ответы [ 4 ]

2 голосов
/ 28 марта 2011

Добавить SWT банки в classpath. В частности, org.eclipse.swt_x.x.x и org.eclipse.swt.win32.win32.x86_x.x.x. Где x - номер версии, и вам придется искать linux версию, а не win32, как я показал.

1 голос
/ 10 мая 2011

Это правда java -cp library / swt.jar -jar jarname.jar генерирует ту же ошибку.

Это так: при использовании -jar, Java не использует значения -classpath .

Вам необходимо добавить библиотеки в раздел Class-Path в манифесте внутри пакета jar .

Например:

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

Более подробное описание можно найти в ответе здесь

1 голос
/ 28 марта 2011

найдено ... но не совсем.Портировал проект на затмение, добавил все jar-ы.И просто экспортируется как исполняемый файл-jar.И это работает ...

Благодарю всех в любом случае за участие.

1 голос
/ 28 марта 2011

ОБНОВЛЕНО

swt.jar необходимо добавить к записи Class-Path в файле META-INF/MANIFEST.MF.

Вы можете прочитать больше о Java Launcherопции этой ссылки .

...