вот моя проблема: Я разрабатываю плагин Eclipse, который должен запускать Javafx-приложение. Должно быть довольно легко на самом деле, но у меня все еще есть проблема. Вот мой код-пример для простого Fx-приложения:Плагин Eclipse выполняет Javafx-приложение
public class UIContainer extends Application{
public static void main(String[] args){
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("First FXML Example");
Pane myPane = (Pane)FXMLLoader.load(getClass().getResource("gui.fxml"));
Scene myScene = new Scene(myPane);
primaryStage.setScene(myScene);
primaryStage.show();
}
Теперь я хочу, чтобы запустить приложение из Eclipse Plugin Handler вроде этого: не
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
//Call the UIContainer here
//do sth. else
return null;
}
Там на самом деле никакой разницы в называя приложение через основной или пусковой метод в соответствии с сообщением об ошибке.
org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javafx/application/Application
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:243)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:224)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:167)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
...
Caused by: java.lang.ClassNotFoundException: javafx.application.Application cannot be found by XODR-Validator_0.0.1.qualifier
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 60 more
Надеюсь, вы сможете отслеживать мою проблему, чтобы найти решение.
Моя конфигурация: Eclipse, Кеплер (IDE для EE разработчика) JDK1.7.0_40
Заранее спасибо!
Он должен быть запущен после нажатия на пункт меню. Основываясь на том, что Eclipse-Plugin является SWT по умолчанию, я должен связаться с FXCanvas, не так ли? Спасибо, им это попробует. – Nick
хорошо, если это просто диалог, тогда да - лучше реализовать его как JFace-Dialog или SWT-Shell, в которой есть FX-контент в FXCanvas, но я не уверен, что ваш вариант использования. В любом случае вам нужно будет использовать e (fx) клипс, когда вы находитесь в OSGi, не сможете найти javafx-libs, которые НЕ находятся в пути к классам Java7, переупаковка FX в вашем продукте обречена на провал либо (см. http://tomsondev.bestsolution.at/2012/08/01/javafx-2-2-and-osgi/) – tomsontom
FX не является обязательным, но было бы здорово использовать. В любом случае, я попытаюсь превратить его в SWT-Shell. – Nick