我试图从简单的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?请证明我错了。
答案 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。按照这个简单的步骤:
在Eclipse中创建“来自现有JAR档案的插件”
单击META-INF / MANIFEST.MF - 在“运行时”选项卡中全部导出 包(带“添加”)。
将创建的“Fx_Osgi_Plugin”添加为必需的插件 在每个plugin.xml的“Dependencies”选项卡中。
在.product中单击“依赖关系”选项卡中的“添加必需的插件”。
现在使用Java-Fx的插件引用了Osgi Java-Fx 版本