virgo服务器中关于"An Import-Package could not be resolved"类的异常解决方法

       最近在使用virgo进行开发基本osgi的项目,在环境搭建过程中报得最多的就是异常就是以"An Import-Package could not be resolved"开头的,以自己的理解和实际遇到的问题来看,引起些类异常的原因有二:

第一:环境中引入了不同bundle,名称不一样但是在多个bundle组件中的MANIFEST.MF中的Bundle-SymbolicName的名称一样,当然这种异常会容易找到;

第二:多数为这种情况,就是bundle之间相互引用的包的版本不一样造成.

       A.好的情况下能下载到相互兼容的包

       B.根据找不到兼容的包.重点来说下这个,项目中报异常为:

  An Import-Package could not be resolved. Caused by missing constraint in bundle <EAP_Framework_1.0.0>
        constraint: <Import-Package: org.hibernate.loader.collection; version="0.0.0"> 
             constrained to bundle <com.springsource.org.hibernate>  constrained bundle version range "[3.3.1.GA,3.3.1.GA]"
 An Import-Package could not be resolved. Caused by missing constraint in bundle <com.springsource.org.hibernate_3.3.1.GA>
       constraint: <Import-Package: org.slf4j; version="[1.5.2,1.6.0)">

         以上为两个相同类型的异常,导致的结果是:
                                 组件<EAP_Framework_1.0.0>组件<com.springsource.org.hibernate>都不能被加载
        原因1:组件<EAP_Framework_1.0.0>不能加载是由于此组件中依赖的组件 org.hibernate.loader.collection包找不到,而这个包是由组件  <com.springsource.org.hibernate>来提供的,也就是说依赖的组件 <com.springsource.org.hibernate>肯定有问题
       原因2:组件 <com.springsource.org.hibernate_3.3.1.GA>不能加载(启动)是由于在此组件所导入的包org.slf4j没有成功找到,而且在本组件中所要求的org.slf4j包的版在1.5.2至1.6.0之间才可以.
      由上面两个原因可知,异常2是导致异常1的原因,也就是说解决了异常2,所就解决了异常1.组件1没有加载成功就是由于组件2没有加载成功,而组件2没有加载成功是由于找不到合适版本的org.slf4j包,
     所以<com.springsource.org.hibernate_3.3.1.GA>组件的要求应该找到版在1.5.2至1.6.0之间的org.slf4j的组件或包,回头来看看
你的virgo-tomcat-server服务器目录\repository\的ext和usr两个目录中有没有合适的包包含org.slf4j的组件(找不到或版不在1.5.2至1.6.0之间),我的这两个目录中都有,但版本都不对为:
    com.springsource.slf4j.api-1.5.0.jar和com.springsource.slf4j.api-1.6.1.jar,(一般会以下图方式来下载)

我下载到的两个版本都不符合[1.5.2-1.6.0]的要求,因为一个为1.5.0,一个为1.6.1的,所以老是报错,因为当时也没有找到合适slf4j的bundle版本 ,这个异常折腾了我一个下午及晚上4个小时的时间,后来在同事的帮助下,以解决的!我觉得他太聪明,太会变通了!
思路如下:错误的最基本原因是com.springsource.org.hibernate-3.3.1.GA.jar这个bundle中的MANIFEST.MF引用的org.slf4j的包要求的版本为[1.5.2-1.6.0]之间,而virgo-tomcat-server-3.0.3.RELEASE\repository\目录中的ext和usr目录中的关于slf4j的组件包的版本都不在这个范围之内,所以不符合要求才报的异


  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值