java – bundle中未解决的约束,缺少要求osgi.wiring.package

前端之家收集整理的这篇文章主要介绍了java – bundle中未解决的约束,缺少要求osgi.wiring.package前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用OSGi-(felix),SpringDM,hibernate,maven的项目.当我安装bundle时,没关系,我运行bundle id时的输出是:
LastModified         1384619994484
Headers              [Manifest-Version=1.0,Bundle-Vendor=NguyenVinhLinh,Bnd-LastModified=1384619954778,Tool=Bnd-2.1.0.20130426-122213,Bundle-Name=DrugManager,Built-By=nguyenvinhlinh,Import-Package=org.hibernate,org.hibernate.classic,org.hibernate.criterion,org.springframework.beans.factory;version="[2.5,3)",org.springframework.core.io;version="[2.5,org.springframework.transaction.annotation;version="[2.5,Bundle-SymbolicName=DrugManagerDAO,Export-Package=drug,drugGroup,model;version="1.0.0",Bundle-Version=1.0.0,Build-Jdk=1.7.0_45,Created-By=Apache Maven Bundle Plugin,Bundle-ManifestVersion=2]
BundleContext        null
Revisions            [169.0]
BundleId             169
SymbolicName         DrugManagerDAO
RegisteredServices   null
ServicesInUse        null
Version              1.0.0
Location             file:/home/nguyenvinhlinh/Projects/felix-framework-4.2.1/bundle/DrugManager-1.0.jar
State                2
Bundle                 169|Installed  |    1|DrugManagerDAO (1.0.0)

这就是我看到的,当我开始这个包时:

org.osgi.framework.BundleException: Unresolved constraint in bundle DrugManagerDAO [169]: Unable to resolve 169.0: missing requirement [169.0] osgi.wiring.package; (osgi.wiring.package=org.hibernate)

这是我的beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
   http://www.springframework.org/schema/osgi
   ">

    <tx:annotation-driven transaction-manager="transactionManager"/>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionfactorybean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mappingDirectoryLocations" ref="mappingProvider"/>
        <property name="hibernateProperties" ref="propertiesProvider"/>
    </bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
        <property name="driverClassName" value="com.MysqL.jdbc.Driver"/>
        <property name="url" value="jdbc:MysqL://localhost:3306/WOLOLO"/>

        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    <bean id="mappingProvider" class="hibernate.config.HibernateMappingProvider"/>
    <bean id="propertiesProvider" class="hibernate.config.HibernatePropertiesProvider"/>

    <bean id="drugDao" class="drug.HibernateDrugDao">
        <property name="clazz" value="model.Drug"/>
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
     <bean id="drugGroupDao" class="drugGroup.HibernateDrugGroupDao">
        <property name="clazz" value="model.DrugGroup"/>
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <osgi:service ref="drugDao" interface="drug.DrugDao"/>
    <osgi:service ref="drugGroupDao" interface="drugGroup.DrugGroupDao"/>
</beans>

这是我的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>DrugManager</groupId>
    <artifactId>DrugManager</artifactId>
    <version>1.0</version>
    <packaging>bundle</packaging>


    <dependencies>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <version>4.3.0</version>
        </dependency>

        <dependency>
            <groupId>hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>1.8.0.10</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>2.5.6</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>20030825.184428</version>
        </dependency>
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>20030825.183949</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>3.2.6.ga</version>
        </dependency>
        <dependency>
            <groupId>MysqL</groupId>
            <artifactId>MysqL-connector-java</artifactId>
            <version>5.1.27</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>2.4.0</version>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>DrugManagerDAO</Bundle-SymbolicName>
                        <Bundle-Vendor>NguyenVinhLinh</Bundle-Vendor>
                        <Export-Package>"drug,model"</Export-Package>
                        <Import-Package>org.hibernate</Import-Package> <!-- this line I try to insert into to fix requirement,but it does'nt work-->
                    </instructions>
                </configuration>

            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>java.net</id>
            <url>http://download.java.net/maven/2/</url>
        </repository>
    </repositories>


</project>

另外,felix中有一个完整的bundle错误.

g! ERROR: Bundle DrugManagerDAO [190] Error starting file:DrugManager-1.0.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle DrugManagerDAO [190]: Unable to resolve 190.0: missing requirement [190.0] osgi.wiring.package; (osgi.wiring.package=org.hibernate))
org.osgi.framework.BundleException: Unresolved constraint in bundle DrugManagerDAO [190]: Unable to resolve 190.0: missing requirement [190.0] osgi.wiring.package; (osgi.wiring.package=org.hibernate)
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3974)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2037)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1291)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
    at java.lang.Thread.run(Thread.java:744)

解决方法

您是否在容器(Felix)中安装了此捆绑包?
<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.2.6.ga</version>
    </dependency>

如果没有安装它,然后看看你开始捆绑时会发生什么.

原文链接:https://www.f2er.com/java/239823.html

猜你在找的Java相关文章