如何将JavaFX嵌入Eclipse RCP视图

4
我正在尝试从简单的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 bundle中使用JavaFX?请证明我错了。
4个回答

2

1

JavaFX加载器的更新计划更加友好地与OSGI集成,这将在“Lombard”版本中实现(即JavaFX 3.0时间表,即2013年)。在那之前,您可能会遇到在OSGI捆绑包中使用JavaFX时出现的问题。其他与OSGI相关的问题可以通过在JavaFX Jira中搜索OSGI来找到(任何人都可以注册以查看列出的错误和问题)。e(fx)clipse插件的创建者Tom Schindl是在Eclipse中集成JavaFX方面经验最丰富的联系人。


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() {}
}

0
请按照以下简单步骤操作:
  1. 在Eclipse中创建“从现有JAR归档创建插件”

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

  3. 将创建的“Fx_Osgi_Plugin”作为每个plugin.xml的所需插件添加到“依赖项”选项卡中。

  4. 在.product文件中,在依赖项选项卡中点击“添加所需插件”。

现在使用Java-Fx的插件将引用一个Osgi Java-Fx版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接