您的位置:首页 > 编程语言 > Go语言

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

2014-08-22 16:05 706 查看
       最近在使用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的组件包的版本都不在这个范围之内,所以不符合要求才报的异



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐