1

ここに私の問題があります: Javafx アプリケーションを開始する必要がある Eclipse プラグインを開発しています。実際にはかなり簡単なはずですが、まだ問題があります。シンプルな fx-app のコード例を次に示します。

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 Kepler (EE 開発者向け IDE) JDK1.7.0_40

前もって感謝します!

4

1 に答える 1

0
  1. このアプリを追加のプロセスとして起動する必要がありますか?
  2. Eclipse から起動している場合、クラスを実行しているクラスパスは現在のバンドルのクラスパスであり、(e(fx)clipse とそのアダプター フックを使用していない限り) 何をしているのかわからない可能性が高く、 FX と SWT は同じイベント ループを共有しているが、どのように記述したかをお互いに知らないため、問題が発生する可能性が最も高い場合でも、FX を SWT に埋め込むには、FXCanvas を使用する必要があります。
于 2013-10-02T12:18:04.193 に答える