Выполнение завершается неудачно с помощью java -jar, в то время как тот же код работает нормально через eclipse - PullRequest
3 голосов
/ 13 октября 2010

В последнее время я работаю над упаковкой проекта, но это превратилось в кошмар. Итак, вот проблема в двух словах. У меня есть проект, который я хотел бы иметь в виде jar-файла и в конечном итоге использовать его как Java Web Start.

Когда я пытаюсь собрать и запустить код через Eclipse, он работает нормально. Однако, когда я экспортирую его как «исполняемый файл» и пытаюсь запустить его через терминал, я получаю загадочные исключения, которые, похоже, зависят от библиотек, на которые ссылаются. Я проверил, есть ли библиотеки в jar-файле, поэтому они отсутствуют.

В зависимости от того, как я его экспортирую, специфика исключения меняется, в то время как кажется, что он возник из той же проблемы. Ниже приведена трассировка стека, генерируемая при экспорте проекта с использованием зависимых библиотек, упакованных в виде jar-файлов внутри «основной» банки.

Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.ExceptionInInitializerError
at org.eclipse.gef.tools.MarqueeSelectionTool.<init>(MarqueeSelectionTool.java:99)
at org.gvt.MarqueeZoomTool.<init>(MarqueeZoomTool.java:16)
at org.gvt.action.MarqueeZoomToolAction$1.<init>(MarqueeZoomToolAction.java:28)
at org.gvt.action.MarqueeZoomToolAction.createTool(MarqueeZoomToolAction.java:28)
at org.gvt.action.AbstractGEFToolAction.<init>(AbstractGEFToolAction.java:24)
at org.gvt.action.MarqueeZoomToolAction.<init>(MarqueeZoomToolAction.java:20)
at org.gvt.TopMenuBar.createBarMenu(TopMenuBar.java:113)
at org.gvt.ChisioMain.createMenuManager(ChisioMain.java:612)
at org.eclipse.jface.window.ApplicationWindow.addMenuBar(ApplicationWindow.java:235)
at org.gvt.ChisioMain.main(ChisioMain.java:144)
... 5 more
Caused by: java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.graphics.Resource.<init>(Unknown Source)
at org.eclipse.swt.graphics.Cursor.<init>(Unknown Source)
at org.eclipse.draw2d.Cursors.<clinit>(Cursors.java:170)
... 15 more

Кстати, я сохранил вывод XML / ANT процесса экспорта, который я мог бы добавить, если это могло бы быть интересным. Я решил опустить его ради меньшего количества беспорядка.

Есть идеи, в чем здесь может быть проблема?

РЕДАКТИРОВАТЬ: Я начинаю думать, если это 32/64-битная проблема с библиотекой SWT-GTK. Кто-нибудь может подтвердить или опровергнуть это?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2010

Оказывается, eclipse запускает 32-битную JVM на моей машине (по какой-то странной причине), и да, это было о библиотеках os и arch для SWT.Для тех, у кого есть подобные проблемы, пожалуйста, обратитесь к темам ниже для получения дополнительной информации:

Проблемы с загрузкой ресурсов во время выполнения

Запуск на основе SWT, кросс-платформенныйправильно банка на Mac

Удачи,

0 голосов
/ 13 октября 2010

Исключение, которое у вас есть, не относится к зависимостям. Это ошибка программирования: «кто-то передает нулевой аргумент в метод SWT, который не позволяет это).

Согласно трассировке стека, которую вы используете GEF. Как вы запускаете свой код в Eclipse, как Java-приложение или Eclipse-приложение?

Если вы говорите о приложении Eclipse, вы не можете просто экспортировать его как работающий Jar. Вам нужно будет создать RCP. Посмотрите учебник Google для RCP, вы найдете много интересных результатов.

...