简述:
在OSGI框架中开发JAVAFX的C/S应用,主要处理点为如果把javafx运行环境的相关jar与dll文件引入到OSGI的bundle中,
本次处理为把javafx的运行环境的相关文件以一个plug-in Project 的形式加入其中,在该project中把javafx的所在
jar文件中的包全部导出然后在javafx bundle的应用中引入这些包,就可以找到javafx的API了,其它是把dll放到plug-in Project
的根目录下,用于JNI的调用。具体步骤如下:
1:建立一个用于依赖的bundle,在myeclisep9.1中:New-->Other-->Plug-in Development-->Plug-in Project
然后点击 next,输入一个工程名如:fxLibBundle(后续都称为fxLibBundle),在 Target Platform项中选中 an OSGI framework:下拉框中选择 standard,
点击next,在Properties项中可根据情况输入,也可默认,在Options项中取消 Generate an activator,...复选框。
点击next,取消 Create a Plug-in using one of the templates复选框,点击Finish完成插件工程建立向导。
2:在fxLibBundle的根目录中新建一个lib目录,用于存放jar文件,复制JavaFX Runtime 2.0\lib\jfxrt.jar到刚建的lib目录中,
复制JavaFX Runtime 2.0\bin所有的*.dll文件到fxLibBundle的根目录中。打开fxLibBundle工程中/META-INF/MANIFEST.MF文件,
切换到Runtime选项卡中,在Classpath项中点击Add按钮,定位到刚建立的lib目录中的jfxrt.jar文件,选中它然后点击ok按钮完
成jar加到Classpath的操作,然后在Classpath左边的Exported Packages项中,点击Add按钮,在弹出来的对话框中,包括了javafx
所有的包,全选后点击OK完成包的导出。
3:在javafx bundle应用中,打开其META-INF/MANIFEST.MF文件,切换到Dependencies选项卡中,在Required Plug-ins项中点击
Add按钮,在Slect a Plug-in输入框中可输入fxLibBundle来查找,找到后,选中它点击ok即可,接下来在Dependencies选项卡中的
Imported Packages项中点击Add按钮,选择在你的javafx bundle中用到的javafx包,选择完后占击OK完成包的导入。
4:右键你的javafx bundle,Run As-->Run Configurations 在打开的运行对话框中的左侧,双击(或右键)OSGI Framework菜单
新建一个OSGI Framework运行项,在右边出现的Bundles树形中,选择fxLibBundle与自身,在bundles树形右边点击Add Required Bundles
按钮,然后点击Apply按钮,再点击Run按钮运行应用。到此,基于OSGI的javafx应用操作步骤已全部完成。
可能会出现的问题:
。。。。java.lang.UnsatisfiedLinkError。。。。异常:
由于javafx引用不到其需要的dll或版本不对的原因引起。
解决:确定所用的javafx版本与fxLibBundle用的一致,确定dll都在fxLibBundle工程的根目录中。
续
在javafxbundle开发配置完成后,目前如何启动javafx bundle应用与更新、停止却又出现了问题。这些问题会在后续进一步进行解决,目前已
有解决的思路,等待测试。
续解决办法:
在启动javafx时不能直接用application.launch,而需要用如下代码启动:
PlatformImpl.startup(new Runnable() {
public void run() {
Stage stage = new Stage();
stage.setTitle("OSGI javaFx bundle");
stage.centerOnScreen();
//Scene scene = makeScene();
//stage.setScene(scene);
FIX_OSGI fix_osgi = new FIX_OSGI();
fix_osgi.start(stage);
}});
其中 FIX_OSGI 是一个自定义类,其start 方法部分如下:
public void start(Stage st) {
...
Scene scene = new Scene(new Group, 500, 200);
...
stage.setScene(scene);
...
}
这样启动后,对于javafx的bundle就可即时的更新、停止与启动了。
更多处理,请搜索javafx与swing整合相关资料。
相关推荐
基于OSGi框架之开发环境搭建基于OSGi框架之开发环境搭建
该Demo模拟了这样一个功能, 从OSGI命令行接收到一个命令: 服务名 参数1 参数2 就能将服务转发到对应的服务插件上去. 比如: AddService 12 34 这样就能将参数传递给AddService这样的服务, 并得到两个参数相加的结果
基于OSGi和Spring开发Web应用
基于OSGi和Spring开发Web应用的博文对应的代码
osgi框架介绍,想了解osgi框架开发模式的可以下下来看看,里面包含几个pdf,比较基础和详细
OSGI框架实战 一. 序..5 二. 体验OSGI..7 2.1. 需求实现..7 2.2. 技术角度..9 三. OSGI带来什么..11 四. OSGI案例..13 五. OSGI框架..15 5.1. Equinox..15 5.2. Oscar..15 5.3. Knopflerfish..15 六. 基于OSGI框架...
基于osgi整合ssm框架开发web项目,使用ssm注解的方式开发,缺少两个jsp文件,能运行
基于OSGi和Spring开发Web应用教程 教程
基于OSGi和Spring开发Web应用
基于 OSGi 和 Spring 开发 Web 应用
基于OSGi的Web应用开发系列(全).pdf基于OSGi的Web应用开发系列(全).pdf基于OSGi的Web应用开发系列(全).pdf基于OSGi的Web应用开发系列(全).pdf基于OSGi的Web应用开发系列(全).pdf基于OSGi的Web应用开发系列(全).pdf...
osgi实战源码 通过一个完整购物车实例来展示OSGI的实现.代码简单易懂,可扩展.
解答如何基于OSGi怎么来设计/实现/部署/测试项目和产品
四大OSGI框架Felix, Eqinox, Spring-DM, Knopflerfish最新技术对比分析
基于OSGi框架的网络操作工单管理系统的设计与实现论文.doc
基于OSGi和Spring开发企业级Web应 目前OSGi和Spring已经受到了广泛的关注,如果我们将OSGi和Spring结合,更能充分发挥二者各自的特长,同时更好地满足企业级应用开发的需求。
针对异构遥感算法服务集成方法在元数据和生命周期管理方面的不足,提出了在OSGi框架下基于LDAP的异构服务调用机制。该机制设计了一个异构服务代理,将异构服务封装为OSGi bundle服务,实现服务生命周期管理,并结合...