如何将JavaFX嵌入到eclipse rcp视图中

时间:2012-02-20 21:49:03

标签: eclipse-rcp javafx javafx-2

我试图从简单的eclipse视图中使用JavaFX 2,但我得到了一个

  

java.lang.UnsatisfiedLinkError:类的URL无效:   bundleresource://435.fwk1827795025/com/sun/glass/utils/NativeLibLoader.class

经过对JAD的一些调查后,我发现NativeLibLoader有非常有趣的检查:

if(!classUrlString.startsWith("jar:file:") || classUrlString.indexOf("!") == -1)
    throw new UnsatisfiedLinkError((new StringBuilder()).append("Invalid URL for class: ").append(classUrlString).toString());

这是否意味着无法从OSGi包中使用javafx?请证明我错了。

4 个答案:

答案 0 :(得分:2)

我刚刚发布了一步一步的教程,介绍如何创建和导出使用JavaFX 2.0的Eclipse ViewPart。见http://www.efxclipse.org/trac/wiki/Tutorial3

答案 1 :(得分:1)

JavaFX加载程序更新friendly with OSGI的更新计划用于“Lombard”版本(JavaFX 3.0 timeframe,即2013)。在此之前,您可能会遇到从OSGI包中使用JavaFX的问题。通过在JavaFX Jira中搜索OSGI可以找到其他与OSGI相关的问题(任何人都可以注册以查看其中列出的错误和问题)。 Tom Schindl,Eclipse中JavaFX的e(fx)clipse插件的创建者,将是在Eclipse中集成JavaFX的经验的最佳联系点。

答案 2 :(得分:0)

e(fx)clipse现在有一个向导。请看看: http://www.efxclipse.org/trac/wiki/Tutorial2

您可以使用此hello world代码快速测试您的视图:

public class MyViewPart extends FXViewPart {

    @Override
    protected Scene createFxScene() {
        Button btn = new Button();
        btn.setText("Say 'Hello World!'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent arg0) {
                System.out.println("Hello World!");
            }
        });
        StackPane root = new StackPane();
        root.getChildren().add(btn);

        return new Scene(root,300,200);
    }

    @Override
    protected void setFxFocus() {}
}

答案 3 :(得分:0)

PLS。按照这个简单的步骤:

  1. 在Eclipse中创建“来自现有JAR档案的插件”

    • 添加外部..jre / lib / jfxrt.jar(来自jdk1.7)
    • 点击目标平台“OSGI框架”!
    • 取消选择“解压缩”。
  2. 单击META-INF / MANIFEST.MF - 在“运行时”选项卡中全部导出 包(带“添加”)。

  3. 将创建的“Fx_Osgi_Plugin”添加为必需的插件 在每个plugin.xml的“Dependencies”选项卡中。

  4. 在.product中单击“依赖关系”选项卡中的“添加必需的插件”。

  5. 现在使用Java-Fx的插件引用了Osgi Java-Fx 版本