Is it possible that there are some uses constraint issues.  The resolver
will drop optional imports if their import wires would cause a uses
constraint violation (inconsistent class space).  Have you tried the
official 3.5.0 release of Equinox (or better even one of the 3.5.1 builds)?
The version you are using looks to be some build of 3.5.0 M5.

Tom




|------------>
| From:      |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Don Laidlaw <[email protected]>                                          
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Equinox development mailing list <[email protected]>                   
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |09/01/2009 11:34 AM                                                          
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |[equinox-dev] Optional package import resolving problem                      
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|





Hi Everyone,

I am using org.eclipse.osgi_3.5.0.v20090127-1630 and starting a small
container with the OSGi Framework launch configuration. In this container I
have the Spring framework and its minimal dependencies. All bundles start
OK.

The Spring framwork ORM bundle has imports for the hibernate packages, all
marked as optional. The hibernate (and only one bundle is in the container
that exports hibernate bundles) bundle is started before the spring
framework bundles using the run levels on the launch configuration.

The problem is that only some of the optional hibernate imports are
actually resolved in the spring orm bundle. I can find no explanation for
that behaviour at all. This is what is being exported by the hibernate
bundle:

Snip...
 org.hibernate                         {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.action                  {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.bytecode                {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.bytecode.cglib          {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.bytecode.javassist      {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.bytecode.util           {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.cache                   {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.cache.entry             {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.cfg                     {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.classic                 {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.collection              {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.connection              {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.context                 {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.criterion               {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.dialect                 {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.dialect.function        {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.dialect.lock            {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.engine                  {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.engine.loading          {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.engine.query            {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.engine.query.sql        {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.engine.transaction      {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.event                   {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.event.def               {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.exception               {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.hql                     {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.hql.antlr               {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.hql.ast                 {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.hql.ast.exec            {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.hql.ast.tree            {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.hql.ast.util            {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.hql.classic             {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.id                      {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.id.enhanced             {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.id.insert               {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.impl                    {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.intercept               {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.intercept.cglib         {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.intercept.javassist     {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.jdbc                    {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.jmx                     {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.loader                  {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.loader.collection       {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.loader.criteria         {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.loader.custom           {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.loader.custom.sql       {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.loader.entity           {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.loader.hql              {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.lob                     {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.mapping                 {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.metadata                {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.param                   {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.persister               {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.persister.collection    {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.persister.entity        {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.pretty                  {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.property                {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.proxy                   {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.proxy.dom4j             {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.proxy.map               {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.proxy.pojo              {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.proxy.pojo.cglib        {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.proxy.pojo.javassist    {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.secure                  {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.sql                     {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.stat                    {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.tool.hbm2ddl            {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.tool.instrument         {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.tool.instrument.cglib   {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.tool.instrument.javassist{version=3.2.6.ga-SNAPSHOT}
  org.hibernate.transaction             {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.transform               {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.tuple                   {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.tuple.component         {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.tuple.entity            {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.type                    {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.usertype                {version=3.2.6.ga-SNAPSHOT}
  org.hibernate.util                    {version=3.2.6.ga-SNAPSHOT}
...snip

This is what is being imported by the spring orm bundle:

org.hibernate                         {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.cache                   {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.cfg                     {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.classic                 {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.connection              {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.context                 {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.criterion               {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.dialect                 {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.ejb                     {version=[3.3.0.ga, 4.0.0),
resolution:=optional}
  org.hibernate.engine                  {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.event                   {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.event.def               {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.exception               {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.impl                    {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.jdbc                    {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.persister.entity        {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.tool.hbm2ddl            {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.transaction             {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.transform               {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.type                    {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.usertype                {version=[3.2.6.ga, 4.0.0),
resolution:=optional}
  org.hibernate.util                    {version=[3.2.6.ga, 4.0.0),
resolution:=optional}

The OSGi console tells me what is actually bound in the container:

osgi> b 20
org.springframework.orm_2.5.6.SEC01 [20]
  Id=20, Status=ACTIVE      Data
Root=/Users/dlaidlaw/Infor/workspaces/framework/.metadata/.plugins/org.eclipse.pde.core/SpringHibernateContainer/org.eclipse.osgi/bundles/20/data

  No registered services.
  No services in use.
  Exported packages
    org.springframework.orm; version="2.5.6.SEC01"[exported]
    org.springframework.orm.hibernate3; version="2.5.6.SEC01"[exported]
    org.springframework.orm.hibernate3.annotation;
version="2.5.6.SEC01"[exported]
    org.springframework.orm.hibernate3.support;
version="2.5.6.SEC01"[exported]
    org.springframework.orm.ibatis; version="2.5.6.SEC01"[exported]
    org.springframework.orm.ibatis.support; version="2.5.6.SEC01"[exported]
    org.springframework.orm.jdo; version="2.5.6.SEC01"[exported]
    org.springframework.orm.jdo.support; version="2.5.6.SEC01"[exported]
    org.springframework.orm.jpa; version="2.5.6.SEC01"[exported]
    org.springframework.orm.jpa.persistenceunit;
version="2.5.6.SEC01"[exported]
    org.springframework.orm.jpa.support; version="2.5.6.SEC01"[exported]
    org.springframework.orm.jpa.vendor; version="2.5.6.SEC01"[exported]
    org.springframework.orm.toplink; version="2.5.6.SEC01"[exported]
    org.springframework.orm.toplink.support;
version="2.5.6.SEC01"[exported]
  Imported packages
    javax.naming; version="0.0.0"<org.eclipse.osgi_3.5.0.v20090127-1630
[0]>
    javax.persistence;
version="1.99.0"<com.springsource.javax.persistence_1.99.0 [1]>
    javax.persistence.spi;
version="1.99.0"<com.springsource.javax.persistence_1.99.0 [1]>
    javax.sql; version="0.0.0"<org.eclipse.osgi_3.5.0.v20090127-1630 [0]>
    javax.transaction;
version="1.1.0"<com.springsource.javax.transaction_1.1.0 [23]>
    javax.xml.parsers;
version="0.0.0"<org.eclipse.osgi_3.5.0.v20090127-1630 [0]>
    org.aopalliance.intercept;
version="1.0.0"<com.springsource.org.aopalliance_1.0.0 [10]>
    org.apache.commons.logging;
version="1.1.1"<org.ops4j.pax.logging.pax-logging-api_1.3.0 [9]>
    org.hibernate.cfg;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.classic;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.connection;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.dialect;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.event;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.event.def;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.exception;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.persister.entity;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.tool.hbm2ddl;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.transform;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.type;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.hibernate.usertype;
version="3.2.6.ga-SNAPSHOT"<com.infor.org.hibernate_3.2.6.ga-SNAPSHOT [26]>
    org.springframework.aop.scope;
version="2.5.6.SEC01"<org.springframework.aop_2.5.6.SEC01 [27]>
    org.springframework.aop.support;
version="2.5.6.SEC01"<org.springframework.aop_2.5.6.SEC01 [27]>
    org.springframework.beans;
version="2.5.6.SEC01"<org.springframework.beans_2.5.6.SEC01 [17]>
    org.springframework.beans.factory;
version="2.5.6.SEC01"<org.springframework.beans_2.5.6.SEC01 [17]>
    org.springframework.beans.factory.annotation;
version="2.5.6.SEC01"<org.springframework.beans_2.5.6.SEC01 [17]>
    org.springframework.beans.factory.config;
version="2.5.6.SEC01"<org.springframework.beans_2.5.6.SEC01 [17]>
    org.springframework.beans.factory.support;
version="2.5.6.SEC01"<org.springframework.beans_2.5.6.SEC01 [17]>
    org.springframework.context;
version="2.5.6.SEC01"<org.springframework.context_2.5.6.SEC01 [7]>
    org.springframework.context.weaving;
version="2.5.6.SEC01"<org.springframework.context_2.5.6.SEC01 [7]>
    org.springframework.core;
version="2.5.6.SEC01"<org.springframework.core_2.5.6.SEC01 [6]>
    org.springframework.core.io;
version="2.5.6.SEC01"<org.springframework.core_2.5.6.SEC01 [6]>
    org.springframework.core.io.support;
version="2.5.6.SEC01"<org.springframework.core_2.5.6.SEC01 [6]>
    org.springframework.core.type;
version="2.5.6.SEC01"<org.springframework.core_2.5.6.SEC01 [6]>
    org.springframework.core.type.classreading;
version="2.5.6.SEC01"<org.springframework.core_2.5.6.SEC01 [6]>
    org.springframework.core.type.filter;
version="2.5.6.SEC01"<org.springframework.core_2.5.6.SEC01 [6]>
    org.springframework.dao;
version="2.5.6.SEC01"<org.springframework.transaction_2.5.6.SEC01 [22]>
    org.springframework.dao.support;
version="2.5.6.SEC01"<org.springframework.transaction_2.5.6.SEC01 [22]>
    org.springframework.instrument.classloading;
version="2.5.6.SEC01"<org.springframework.context_2.5.6.SEC01 [7]>
    org.springframework.jdbc;
version="2.5.6.SEC01"<org.springframework.jdbc_2.5.6.SEC01 [18]>
    org.springframework.jdbc.datasource;
version="2.5.6.SEC01"<org.springframework.jdbc_2.5.6.SEC01 [18]>
    org.springframework.jdbc.datasource.lookup;
version="2.5.6.SEC01"<org.springframework.jdbc_2.5.6.SEC01 [18]>
    org.springframework.jdbc.support;
version="2.5.6.SEC01"<org.springframework.jdbc_2.5.6.SEC01 [18]>
    org.springframework.jdbc.support.lob;
version="2.5.6.SEC01"<org.springframework.jdbc_2.5.6.SEC01 [18]>
    org.springframework.jndi;
version="2.5.6.SEC01"<org.springframework.context_2.5.6.SEC01 [7]>
    org.springframework.transaction;
version="2.5.6.SEC01"<org.springframework.transaction_2.5.6.SEC01 [22]>
    org.springframework.transaction.jta;
version="2.5.6.SEC01"<org.springframework.transaction_2.5.6.SEC01 [22]>
    org.springframework.transaction.support;
version="2.5.6.SEC01"<org.springframework.transaction_2.5.6.SEC01 [22]>
    org.springframework.ui;
version="2.5.6.SEC01"<org.springframework.context_2.5.6.SEC01 [7]>
    org.springframework.util;
version="2.5.6.SEC01"<org.springframework.core_2.5.6.SEC01 [6]>
    org.springframework.util.xml;
version="2.5.6.SEC01"<org.springframework.core_2.5.6.SEC01 [6]>
    org.w3c.dom; version="0.0.0"<org.eclipse.osgi_3.5.0.v20090127-1630 [0]>
    org.xml.sax; version="0.0.0"<org.eclipse.osgi_3.5.0.v20090127-1630 [0]>
  No fragment bundles
  Named class space
    org.springframework.orm; bundle-version="2.5.6.SEC01"[provided]
  No required bundles

Note that only 12 of the 22 imports are actually bound. But the hibernate
bundle exports all of those 22 imports. The diag command on spring orm
says:

osgi> diag 20
init...@reference:file:org.springframework.orm-2.5.6.SEC01.jar/ [20]
  Direct constraints which are unresolved:
    Missing imported package com.ibatis.common.util_[2.3.0.677,3.0.0).
    Missing imported package com.ibatis.common.xml_[2.3.0.677,3.0.0).
    Missing imported package com.ibatis.sqlmap.client_[2.3.0.677,3.0.0).
    Missing imported package
com.ibatis.sqlmap.client.event_[2.3.0.677,3.0.0).
    Missing imported package
com.ibatis.sqlmap.engine.builder.xml_[2.3.0.677,3.0.0).
    Missing imported package
com.ibatis.sqlmap.engine.impl_[2.3.0.677,3.0.0).
    Missing imported package
com.ibatis.sqlmap.engine.transaction_[2.3.0.677,3.0.0).
    Missing imported package
com.ibatis.sqlmap.engine.transaction.external_[2.3.0.677,3.0.0).
    Missing imported package
com.ibatis.sqlmap.engine.type_[2.3.0.677,3.0.0).
    Missing imported package javax.jdo_[2.0.0,3.0.0).
    Missing imported package javax.jdo.datastore_[2.0.0,3.0.0).
    Missing imported package javax.servlet_[2.4.0,3.0.0).
    Missing imported package javax.servlet.http_[2.4.0,3.0.0).
    Missing imported package
oracle.toplink.essentials.ejb.cmp3_[2.0.0.b41-beta2,3.0.0).
    Missing imported package
oracle.toplink.essentials.expressions_[2.0.0.b41-beta2,3.0.0).
    Missing imported package
oracle.toplink.essentials.internal.databaseaccess_[2.0.0.b41-beta2,3.0.0).
    Missing imported package
oracle.toplink.essentials.internal.sessions_[2.0.0.b41-beta2,3.0.0).
    Missing imported package
oracle.toplink.essentials.sessions_[2.0.0.b41-beta2,3.0.0).
    Missing imported package oracle.toplink.exceptions_[10.1.3,11.0.0).
    Missing imported package oracle.toplink.expressions_[10.1.3,11.0.0).
    Missing imported package
oracle.toplink.internal.databaseaccess_[10.1.3,11.0.0).
    Missing imported package oracle.toplink.jndi_[10.1.3,11.0.0).
    Missing imported package oracle.toplink.logging_[10.1.3,11.0.0).
    Missing imported package
oracle.toplink.publicinterface_[10.1.3,11.0.0).
    Missing imported package oracle.toplink.queryframework_[10.1.3,11.0.0).
    Missing imported package oracle.toplink.sessionbroker_[10.1.3,11.0.0).
    Missing imported package oracle.toplink.sessions_[10.1.3,11.0.0).
    Missing imported package oracle.toplink.threetier_[10.1.3,11.0.0).
    Missing imported package
oracle.toplink.tools.sessionconfiguration_[10.1.3,11.0.0).
    Missing imported package
oracle.toplink.tools.sessionmanagement_[10.1.3,11.0.0).
    Missing imported package org.apache.openjpa.persistence_[1.0.2,2.0.0).
    Missing imported package
org.eclipse.persistence.expressions_[1.0.0,2.0.0).
    Missing imported package
org.eclipse.persistence.internal.databaseaccess_[1.0.0,2.0.0).
    Missing imported package
org.eclipse.persistence.internal.sessions_[1.0.0,2.0.0).
    Missing imported package org.eclipse.persistence.jpa_[1.0.0,2.0.0).
    Missing imported package
org.eclipse.persistence.sessions_[1.0.0,2.0.0).
    Missing imported package org.hibernate.ejb_[3.3.0.ga,4.0.0).
    Missing imported package
org.springframework.web.context_[2.5.6.SEC01,2.5.6.SEC01].
    Missing imported package
org.springframework.web.context.request_[2.5.6.SEC01,2.5.6.SEC01].
    Missing imported package
org.springframework.web.context.support_[2.5.6.SEC01,2.5.6.SEC01].
    Missing imported package
org.springframework.web.filter_[2.5.6.SEC01,2.5.6.SEC01].

Can anyone explain why the other packages would not be resolved?

--
Best Regards,

Don Laidlaw | Sr. Research Engineer | Infor | office: +1 902-576-5185 |
mobile: +1 902-401-6771 | [email protected].
_______________________________________________
equinox-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/equinox-dev

<<inline: graycol.gif>>

<<inline: ecblank.gif>>

_______________________________________________
equinox-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to