`

解决OSGI环境第三方包的NoClassDefFoundError

    博客分类:
  • OSGI
阅读更多

总结了一下:

1、把第三方包的class文件改造为一个bundle,export所有的package

2、使用了eclipse的equinox实现启动所有bundle

3、在eclipse环境下启动都正常,但是放在命令行(windows/linux都一样)启动,都失败,即出现:

Exception in thread 'Thread-1' java.lang.NoClassDefFoundError: javax/naming/NamingException
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:169)
  at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.class$(SqlMapConfigParser.java

4、经过比较两者的运行环境,发现关键差别在于java.syspath和osgi launcher不同,但是也无法改变。

5、经过javaeye和osgi china groups的搜索,发现了一个国外的帖子(共享一下):

Option 1: "DynamicImport-Package: *" to the manifest of your bundle. This is one possible pure OSGi solution and should do what you want.

Option 2: If you are using Equinox as OSGi implementation you could also take a look at the Buddy-Loading mechanism:
http://help.eclipse.org/help33/t ... /buddy_loading.html

6、解决方法总结:在第三方包的class加载其他的类,而这些类又不在当前的bundle,可能出现这个异常,只要在Manifest.mf文件加入DynamicImport-Package: *,或者使用eclipse的buddy loading机制(还没有试验)可以解决问题。

总之,osgi的好处很多,但是缺点(不方便的地方)也很明显,就是classpath(classloader)机制,正因为如此,我才放弃了spring。但是spring+osgi是大势所趋,两者的DI很相似,OSGI的DS用起来非常像spring的配置文件。等有空研究一下两者的结合。

分享到:
评论
1 楼 royboy 2012-05-10  
你好,我也遇到这样的问题,但通过DynamicImport-Package: *没解决了

相关推荐

    OSGI环境搭建以及简单使用

    OSGI环境搭建以及在搭建环境的基础上面附带一个小例子,让你熟悉osgi开发流程

    osgi介绍osgi介绍

    osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍

    基于OSGi框架之开发环境搭建V_2.0

    基于OSGi框架之开发环境搭建基于OSGi框架之开发环境搭建

    OSGi开发环境建立和Hello World

    这是来自cnblogs博主 静默虚空 的文章 ,为方便离线查看,转存为了pdf

    解决osgi spring 事务配置问题

    NULL 博文链接:https://malixxx.iteye.com/blog/560674

    osgi解决不同版本jar包冲突的demo

    压缩包里面有myself工程。里面只有一个类。可以自己创建两个版本的myself的jar包,然后测试osgi解决jar包冲突。

    osgi-jetty-9.3.10环境配置-注册Servlet工程示例

    OSGI环境搭建-使用JETTY-9.X创建WEB应用-注册Servlet-Jetty性能调优

    OSGi原理与最佳实践pdf下载(完整版)

    OSGI原理与最佳实践的完整版,共12章 第1 章OSGi 简介 ...第3 章基于Spring-DM 实现Petstore 第4 章基于Apache CXF 实现分布式Petstore 第5 章构建OSGI Bundle Repositor'y 第6 章OSGi 规范解读 ……

    OSGI中包含web服务器配置需要的jar.zip

    我转载的博客“OSGi环境下建立Web工程的Hello World ”中列出的jar,结合博客“OSGi环境下建立Web工程的Hello World ”开发应用。

    OSGI原理与最佳实践

    资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...

    利用R-OSGi实现分布式OSGi应用

    利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...

    OSGi.NET框架 Documentation

    本文档主要针对OSGi.NET模块化框架使用进行了描述 OSGi.NET框架是一个参照了OSGi规范的模块化管理框架。框架为应用程序(组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次: 1.运行环境 2.模块...

    OSGI合集 OSGi原理与最佳实践

    网上收集的OSGI资料. 包括: OSGi原理与最佳实践(精选版).pdf OSGI实战和源码.rar osgi进阶.pdf Introduce.OSGi.ppt OSGi.in.action.ppt r4.cmpn.pdf r4.core.pdf r4.enterprise.pdf

    OSGi与Equinox 创建高度模块化的Java系统

    第三部分由原型构建转向实际的产品开发,主要介绍了OSGi和Equinox中用来构建成熟的OSGi应用必不可少的API——服务器端、声明式服务和发布工程,以及如何用它们来解决实践中的一些问题;第四部分呈现了动态性的最佳...

    Equinox OSGI ServletBridge 原理与实践.rar

    OSGI 在 J2EE 环境下的应用越来越广泛,目前在 Servlet 应用中使用 OSGI 有两种方式:Servlet Container in OSGI 和 OSGI in Servlet Container. 前一种:和普通的 OSGI bundle 开发差不多,而后一种:Equinox 提供...

    OSGI进阶.pdf

    讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的讲OSGI应用的

    OSGI 实例eclipse插件开发

    OSGI 实例 eclipse 插件开发

    OSGI 入门资料PDF

    OSGI 入门资料PDF,包括OSGI实战、OSGI进阶、OSGI 入门和整合Spring、OSGI原理与最佳实践

Global site tag (gtag.js) - Google Analytics