Не могу использовать JFace и SWT в eclipse без создания плагина

StackOverflow https://stackoverflow.com/questions/1952586

Вопрос

Отказ от ответственности:

это классический случай, когда .NET GUI пытается обойти JAVA-интерфейс.

ОПИСАНИЕ ПРОБЛЕМЫ:

Я пытаюсь создать очень простой графический интерфейс с помощью JFace и SWT - код прост (есть много руководств), но что не так просто, так это то, что я, похоже, не могу заставить JFace и SWT работать вне проекта плагина.

Я бы ожидал, что смогу использовать JFace и SWT в моем проекте без проблем, так как я поставил "C:/eclipse 3.5/ plugins" в моем пути к классу (с моего компьютера -> свойства -> дополнительно -> переменные среды) и все swt-*.dll, которые я смог найти в моем ПУТИ (как локальный пользовательский, так и глобальный пути, чтобы быть уверенным), как эта статья указывается в поле "Установка SWT и JFace".

Проблема в том, что я ничего не могу импортировать из eclipse.org если я не ссылаюсь напрямую на jar из buildpath -> библиотеки -> добавить внешние jar (для его сборки я должен добавить следующие jar: org.eclipse.swt.win32.win32.x86_3.5.1.v3555a.jar, org.eclipse.jface_3.5.1.M20090826-0800.jar).Как только я это делаю, он строится нормально, но затем, когда я запускаю его как "Java-приложение", я получаю следующую ошибку (должен ли я ЗАПУСКАЙТЕ КАК что-то еще?):

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
    at demo.ui.test.EntryPoint.main(EntryPoint.java:18)
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IProgressMonitor
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 1 more

Я попытался отладить это, и в основном это выбрасывается, как только оно пытается создать экземпляр ApplicationWindow класс (org.eclipse.jface.window.ApplicationWindow).Пытаясь воспроизвести ошибку, я закомментировал весь свой код и заменил его следующим в моем основном, и он выдает ту же ошибку, что и выше, в первой строке:

ApplicationWindow w = new ApplicationWindow(null); //<-- error on this line
w.setBlockOnOpen(true);
w.open();
Display.getCurrent().dispose();

ВОПРОСЫ:

Вопрос 1:как я могу исправить ошибку выше (я хотел бы понять, что происходит) и запустить эту чертову штуку?

Вопрос 2:почему банки не видны в моем проекте и как их сделать?

Вероятно, я упускаю что-то очень тривиальное из-за моего незнания Java и eclipse.Любая помощь высоко ценится!

Редактировать:похоже, у кого-то еще была такая же проблема -> http://www.eclipsezone.com/eclipse/forums/t60528.html - не слишком понятно, как они это решили, хотя помощь оценена

Это было полезно?

Решение

IProgressMonitor интерфейс недоступен в тех двух банках, которые вы используете.Вам также нужно поместить org.затмение.равноденствие.общее плагин в вашем пути к классу. IProgressMonitor может использоваться без запуска всей среды eclipse.

(Это решение из статьи, на которую вы ссылаетесь.Первоначально я думал, что IProgressMonitor находится в плагине org.eclipse.core.runtime, но он был перенесен в org.eclipse.equinox.common, как описано в ошибка #122935)

Другие советы

Повторяя точку зрения Питера выше, мне всегда приходится добавлять кучу банок, чтобы все заработало (особенно для JFace).Как правило, мне понадобится

./org.eclipse.core.commands_3.3.0.I20070605-0010.jar
./org.eclipse.core.runtime_3.3.100.v20070530.jar
./org.eclipse.equinox.common_3.3.0.v20070426.jar
./org.eclipse.jface_3.3.1.M20070910-0800b.jar
./org.eclipse.osgi_3.3.2.R33x_v20080105.jar
./org.eclipse.ui.forms_3.3.0.v20070511.jar

Вы можете использовать что-то вроде jarfinder, чтобы помочь определить, какие файлы находятся в каких JARS.В Windows я, кажется, помню, как использовал функцию поиска для поиска, скажем, IProgressMonitor.class в zip / jar-файлах в папке eclipse в файловой системе - так как иногда фактические JARS бывает трудно отследить.

Обычно я работаю, наблюдая, что выходит из строя, отыскивая / добавляя БАНКУ, ополаскивая и повторяя.

Выполнение RCP / плагинов похоже, что Eclipse решает многие проблемы за вас, создание собственного автономного приложения сопряжено с этим дополнительным багажом, но действительно приятно иметь надлежащий автономный графический интерфейс, если вы придерживаетесь его.Поэтому я обычно настраиваю проекты vanilla (без плагинов) eclipse, и это заставляет вас сталкиваться с этими проблемами (добавлять JARS в classpath вручную).Это также пригодится, когда вы захотите распространить свой проект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top