[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[equinox-dev] Wrapped OSGi app in Eclipse RCP runs with org.eclipse.equinox.ds 1.2.1 and 1.4.1, but not with 1.3.1

Dear Equinox Developers,

I'm experiencing an issue related to org.eclipse.equinox.ds (DS),
described below at the risk of outing myself as the newbie I am.

I develop an Eclipse RCP application, based on RCP 3.7.2. This app (A)
also includes a third-party pure OSGi app (B), wrapped in an Eclipse
Feature to make it usable from within app (A).

I got it to run just fine with a setup of RCP Feature 3.7.2, DS 1.3.1,
app (B) 1.x.

Now the developers of app (B) have released version 2 of their app, with
a change in bundle structure, API, etc. They're also pulling in deps
from their POMs directly (good on them). I've updated my Eclipse Feature
wrapping the new version, and updated my RCP app (A) to use this new
feature. All of a sudden, however, app (B) doesn't run from within my
RCP app (A) anymore. Stack trace excerpts given below. Please note that
I had to add org.osgi.service.component to the target platform to
satisfy app (B)'s dependencies.

As I know the (B) devs well, I've asked them to check and it turns out
that app (B) runs fine with DS 1.2.1 and 1.4.1, but not with 1.3.1.

I've also done a brute-force update of RCP app (A) to the Juno Platform,
which uses DS 1.4.1, and it runs just fine from there. For other reasons
though, I cannot switch to a higher RCP version just now, so I'd like to
be able to run app (B) from within my 3.7.2-based app (A).

Hence my questions:
1) Are there known issues/changes from DS 1.2.1 to 1.3.1 to 1.4.1 which
might cause my problem? Fixes?
2) Although there may be better places to ask this, does anyone know of
a way to include a DS version other than 1.3.1 in an Eclipse RCP
3.7.2-based app? AFAIK, one cannot run two versions of the same plugin
in one and the same target platform.

Many thanks in advance! And I'm happy to provide any other information
that might help.

Stephan

==========================================================

STACKTRACES BELOW:

!ENTRY org.eclipse.equinox.ds 4 0 2015-07-29 11:07:34.145
!MESSAGE [SCR] Cannot activate instance
appB.packageB.core.ModuleResolverImpl@34ef2a9a
(BImporterComponentFactories: null, appBManipulatorComponentFactories:
null, appBExporterComponentFactories: null) of component Component[
	name = ModuleResolverComponent
	activate = activate
	deactivate = deactivate
	modified =
	configuration-policy = optional
	factory = null
	autoenable = true
	immediate = true
	implementation = appB.packageB.core.ModuleResolverImpl
	state = Unsatisfied
	properties =
	serviceFactory = false
	serviceInterface = [appB.packageB.core.ModuleResolver]
	references = {
		Reference[name =
org.osgi.service.component.ComponentFactory/(component.factory=BExporterComponentFactory),
interface = org.osgi.service.component.ComponentFactory, policy =
dynamic, cardinality = 0..n, target =
(component.factory=BExporterComponentFactory), bind =
addBExporterComponentFactory, unbind = removeBExporterComponentFactory]
		Reference[name =
org.osgi.service.component.ComponentFactory/(component.factory=BImporterComponentFactory),
interface = org.osgi.service.component.ComponentFactory, policy =
dynamic, cardinality = 0..n, target =
(component.factory=BImporterComponentFactory), bind =
addBImporterComponentFactory, unbind = removeBImporterComponentFactory]
		Reference[name =
org.osgi.service.component.ComponentFactory/(component.factory=BManipulatorComponentFactory),
interface = org.osgi.service.component.ComponentFactory, policy =
dynamic, cardinality = 0..n, target =
(component.factory=BManipulatorComponentFactory), bind =
addBManipulatorComponentFactory, unbind =
removeBManipulatorComponentFactory]
	}
	located in bundle = appB.B-framework_2.1.1 [180]
]! The specified activate method was not found!

====================================================

OUTPUT OF "osgi> comp n"


	Component[
	name = ModuleResolverComponent
	activate = activate
	deactivate = deactivate
	modified =
	configuration-policy = optional
	factory = null
	autoenable = true
	immediate = true
	implementation = appB.packageB.core.ModuleResolverImpl
	state = Unsatisfied
	properties =
	serviceFactory = false
	serviceInterface = [appB.packageB.core.ModuleResolver]
	references = {
		Reference[name =
org.osgi.service.component.ComponentFactory/(component.factory=BExporterComponentFactory),
interface = org.osgi.service.component.ComponentFactory, policy =
dynamic, cardinality = 0..n, target =
(component.factory=BExporterComponentFactory), bind =
addBExporterComponentFactory, unbind = removeBExporterComponentFactory]
		Reference[name =
org.osgi.service.component.ComponentFactory/(component.factory=BImporterComponentFactory),
interface = org.osgi.service.component.ComponentFactory, policy =
dynamic, cardinality = 0..n, target =
(component.factory=BImporterComponentFactory), bind =
addBImporterComponentFactory, unbind = removeBImporterComponentFactory]
		Reference[name =
org.osgi.service.component.ComponentFactory/(component.factory=BManipulatorComponentFactory),
interface = org.osgi.service.component.ComponentFactory, policy =
dynamic, cardinality = 0..n, target =
(component.factory=BManipulatorComponentFactory), bind =
addBManipulatorComponentFactory, unbind =
removeBManipulatorComponentFactory]
	}
	located in bundle = appB.B-framework_2.1.1 [180]
]
Dynamic information :
  The component is satisfied
  All component references are satisfied
  Component configurations :
    Configuration properties:

org.osgi.service.component.ComponentFactory/(component.factory=BImporterComponentFactory).target
= (component.factory=BImporterComponentFactory)

org.osgi.service.component.ComponentFactory/(component.factory=BManipulatorComponentFactory).target
= (component.factory=BManipulatorComponentFactory)
      objectClass = String[appB.packageB.core.ModuleResolver]
      component.name = ModuleResolverComponent
      component.id = 34

org.osgi.service.component.ComponentFactory/(component.factory=BExporterComponentFactory).target
= (component.factory=BExporterComponentFactory)
    Instances:
    No instances were created because: Method
[addBManipulatorComponentFactory] was not found in class
appB.packageB.core.ModuleResolverImpl
Method [addBExporterComponentFactory] was not found in class
appB.packageB.core.ModuleResolverImpl
Method [addBImporterComponentFactory] was not found in class
appB.packageB.core.ModuleResolverImpl
Can not activate instance of component
appB.packageB.core.ModuleResolverImpl. The specified activate method
[activate] was not found.