ОТКАЗ:Невозможно использовать JFace и SWT в затмении без создания Plugin
это классический случай .NET GUI пытается работать свой путь вокруг JAVA вещи.
ПРОБЛЕМА ОПИСАНИЕ:
Я пытаюсь построить очень простой графический интерфейс с JFace и SWT - код является простым (есть много учебников), что это не так просто, что я не могу показаться, заставить JFace и SWT работать вне проекта плагина.
Я бы ожидал, что у меня будет возможность использовать JFace и SWT в моем проекте без хлопот, так как я положил «C:/eclipse 3.5/plugins» в свой CLASSPATH (с моего компьютера -> свойства -> расширенный - > переменные окружения) и все swt - * .dll, которые я мог бы найти в моем PATH (как для локального пользователя, так и для глобальных PATH), поскольку this article указывает в поле «Установка SWT и JFace».
Проблема заключается в том, что я ничего не могу импортировать с eclipse.org, если я не ссылаюсь непосредственно на банки из пути построения -> libraries -> добавлять внешние банки (для его сборки я должен добавить следующие банки: org.eclipse.swt.win32.win32.x86_3.5.1.v3555a.jar, org.eclipse.jface_3.5.1.M20090826-0800.jar). После того, как я, что он строит нормально, но когда я запускаю его как «Java Application», я получаю следующее сообщение об ошибке (если я RUN AS что-то другое?):
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 и затмением. Любая помощь высоко ценится!
EDIT: кажется, что кто-то еще была такая же проблема ->http://www.eclipsezone.com/eclipse/forums/t60528.html - не слишком ясно, как они решили ее, хотя, помощь оценили
спасибо - мне удалось это понять, но в этой статье потребовалось некоторое время, так как в этой статье они говорили о файле MANIFEST, который у меня нет, так как я нахожусь на простой Java. Поэтому я просто продолжил и добавил ссылку на org.eclipse.equinox.common, и он исправил ее (начал набрасывать еще одну ошибку в EventManager, но исправил ее, ссылаясь на org.eclipse.core.commands). Я нашел это очень запутанным ... Я должен получить некоторые предупреждения, если некоторые вещи, которые мне нужны для запуска приложения, отсутствуют. – JohnIdol
Это действительно сбивает с толку. Если вы разрабатываете плагин eclipse, вы получите все предупреждения, так как зависимости в плагине записываются в файле MANIFEST.MF. Если вы прямо ссылаетесь на некоторый класс/интерфейс, который отсутствует, вы также получите предупреждение. Но использование jar-файлов в автономном приложении сложно, и вам нужно искать зависимости самостоятельно (или использовать что-то вроде Ivy или Maven). –
Как вы добавляете 'org.eclipse.equinox.common' в свой путь к классам? Можете ли вы предоставить инструкции? Откуда вы его и откуда его устанавливаете? – CodyBugstein