OSGi Felix应用程序中未解析的JavaFX包

 2023-02-16    421  

问题描述

我开发了基于Javafx和Osgi Felix容器的丰富应用程序.启动我的Javafx时,抛出了 org.osgi.framework.bundleexception ,表明框架无法接线我的Javafx软件包:

ERROR: Bundle app-impl-bundle [3] Error starting eclipse-project:T:\workspace\fast-osgi\app-impl-bundle\ (org.osgi.framework.BundleException: Unresolved constraint in bundle app-impl-bundle [3]: Unable to resolve 3.0: missing requirement [3.0] osgi.wiring.package; (&(osgi.wiring.package=javafx.stage)(version>=2.2.0)))

在这里我的estest.mf文件:

OSGi Felix应用程序中未解析的JavaFX包

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: app-impl-bundle
Bundle-SymbolicName: app-impl-bundle
Bundle-Version: 1.0.0.qualifier
Require-Bundle: app-bundle;bundle-version="0.0.1"
Bundle-Activator: com.mycompany.app.impl.Activator
Import-Package: javafx.stage;version="2.2.0",
 javax.xml.parsers,
 org.osgi.framework;version="1.8.0",
 org.w3c.dom,
 org.xml.sax
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ClassPath: .,
 target/lib/log4j-1.2.17.jar

和这里的VM参数用于启动OSGI框架(我在Eclipse Luna下运行项目,使用此插件):

-Dosgi.requiredJavaVersion=1.8 -Dorg.osgi.framework.bundle.parent=ext

最后一个论点无效.尽管有这个 证明它在Equinox上起作用. ..

我找到了一个解决方案,将此选项添加到VM参数:

-Dorg.osgi.framework.system.packages.extra=javafx.stage

但这不是很灵活.


您认为Felix Osgi实施是问题吗?它应该仅适用于春分吗?有人可以帮我吗?这是正确的方法吗?

推荐答案

OSGI规格要求捆绑包必须导入所有不以” Java”开头的软件包.因此,您确实需要导入以” Javax”开头的软件包.因此,现在您需要一个包裹的出口商和来源. -Dorg.osgi.framework.bundle.parent=ext为您提供了包装源,因为bundle parent包含EXT Class Loader Loader.但是,框架解析器仍然需要有一个出口商,以了解捆绑包的进口已正确解决.这就是为什么您需要-Dorg.osgi.framework.system.packages.extra=javafx.stage.

其他推荐答案

我已经发布了一些早期访问版本的 drombler fx 用于基于OSGI(Apache Felix)和Maven的Javafx.

作为一个应用程序框架,它确保Javafx和Osgi将正确启动,并提供主窗口.

您可以在此处阅读有关Drombler FX的更多信息: http://puces-blog.blogspot .ch/search/label/drombler

有一个开始页面,该页面解释了如何使用Drombler FX示例应用程序来说明如何使用几个简单的步骤.

请注意,当前有 docking框架因为 Javafx中的错误.该错误应在Java SE/Javafx 8U40中固定,但是(.net/projects/jdk8u/releases/8u40.html” rel=”nofollow”real =”rel =”rel =”rel =”rel =”rel =”rel =”rel =”rel =”rel =”rel =”rel =”rel =”rel =”rel =预期发布日期:2015年3月).

其他推荐答案

添加这两个VM参数为我修复了:

-Dorg.osgi.framework.bundle.parent=ext  
-Dorg.osgi.framework.system.packages.extra=javafx.*

以上所述是小编给大家介绍的OSGi Felix应用程序中未解析的JavaFX包,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34086.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。