2013-10-02 111 views
1

這裏是我的問題: 我正在開發一個應該啓動Javafx應用程序的Eclipse插件。實際上應該很容易,但我仍然有問題。 這裏我的代碼,例如,對於簡單的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插件處理程序這樣的應用程序:

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

提前感謝!

回答

0
  1. 這個應用程序是否應該作爲一個額外的過程啓動?
  2. 如果您正在Eclipse中啓動,執行類的類路徑是當前包中的類,它很可能不知道您在做什麼(除非您使用e(fx)clipse及其適配器鉤子),即使你最有可能陷入困境,因爲FX和SWT共享相同的事件循環,但不知道彼此的寫作方式,爲了將FX嵌入到SWT中,你應該使用FXCanvas。
+0

它應該在按下菜單項後啓動。 基於Eclipse-Plugin默認爲SWT的事實,我應該聯繫FXCanvas,對吧? 謝謝,我會試試那個。 – Nick

+0

好吧,如果它只是一個對話框,那麼是的 - 你最好將它實現爲一個JFace-Dialog或一個SWT-Shell在FXCanvas中持有FX-Content,但我不確定你的用例是什麼。 無論如何,當你在OSGi中時,你將不得不使用e(fx)clipse,否則你將無法找到Java7中不在類路徑上的javafx-libs,重新封裝產品中的FX會導致失敗(請參閱http://tomsondev.bestsolution.at/2012/08/01/javafx-2-2-and-osgi/) – tomsontom

+0

外匯不是強制性的,但會很好用。無論如何,我會嘗試將其包裝到SWT殼中。 – Nick

相關問題