码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-08-22 16:17:49      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:virgo   virgo-tomcat-server   osgi   springdm   

       最近在使用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,(一般会以下图方式来下载)
bubuko.com,布布扣
我下载到的两个版本都不符合[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的组件包的版本都不在这个范围之内,所以不符合要求才报的异常.
解决方法:修改com.springsource.org.hibernate-3.3.1.GA.jar这个bundle中的MANIFEST.MF中关于org.slf4j的要求范围如下图所示:
bubuko.com,布布扣


应该是会解决这个问题的,帖子有点儿啰嗦,但总起看不懂的好点吧,些贴为原创,转载请注明出处!

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

标签:virgo   virgo-tomcat-server   osgi   springdm   

原文地址:http://blog.csdn.net/tssxs/article/details/38752351

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!