OSGi Implementierung - Fehler bei Import Package

Zitzit

Mitglied
Hallo,
ich arbeite derzeit an einer integration von Drools in SMILA via OSGi. SMILA stellt eine Target Platform bereit in dessen Plugin Ordner ich die Drools Bundles (insb. API und Core) herein kopiert habe. Auf diese habe ich in Eclipse auch zugriff und kann die Drools Klassen in meinen Bundles verwenden.

Beispiel aus manifest.mf:
Java:
Import-Package:
 org.drools;version="5.1.1",
 org.drools.builder;version="5.1.1",
 org.drools.builder.help;version="5.1.1",
 org.drools.command;version="5.1.1", ...

Diese 4 Packages kommen aus dem Drools-API Bundle und es gibt keine Probleme. Will ich allerdings das Package "org.drools.command.impl;version="5.1.1"," aus dem Drools-Core Bundle, über den Plug-In Manifest Editor, importieren, bekomme ich folgende Fehlermeldung (im Reiter MANIFEST.MF): "Bundle 'org.drools.core' exporting package 'org.drools.command.impl' is unresolved"

Nach fast 2 Tagen Fehlersuche finde ich einfach nicht den Fehler... Warum findet Eclipse das Package über den Import-Packages-Add Button aber zeigt mir dann einen Fehler an?

Das merkwürdige ist, das ich auf meinem anderen Rechner dieses Problem nicht habe. Da importiert er die Packages ohne Probleme.

Hier noch zwei Screenshots die den Fehler verdeutlichen:
Bild1 (Plug-In Manifest Editor: Reiter Dependencies - Add Import Package)
77857291.jpg

Bild2 (Plug-In Manifest Editor: Reiter MANIFEST.MX - Fehlermeldung)
43472826.jpg



Vielen Dank schonmal im voraus,

zitzit
 

Zitzit

Mitglied
Doch wird es :/ Das Problem tritt auch bei anderen Packages auf. Kann es vllt. sein das Eclipse intern irgendwo eine falsche/defekte Datei benutzt? Hab den Workspace bereits gewechselt. Das merkwürdige ist halt das es auf meinem anderen Laptop ohne Probleme funktioniert.

Hier ein auszug aus der MANIFEST.MF von Drools-Core:
Java:
 org.drools.command.impl;uses:="org.drools.command,
 org.drools.command.runtime.process,
 org.drools.command.runtime.rule,
 org.drools.time,
 org.drools,
 org.drools.rule,
 org.drools.command.runtime";version="5.1.1",
 

Zitzit

Mitglied
Die Target Platform ist die SMILA Distribution. Im Unterordner Plugins sind die ganzen Bundles. Hieran dürfte es an sich nicht liegen, da er in der Target Platform das Core Bundle findet.

Wenn ich trotz import Fehler, mein Bundle/SMILA starte bekomme ich folgende Exceptions:
Code:
 org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Missing Constraint: Import-Package: org.drools.command.impl; version="5.1.1"
...
org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Missing Constraint: Require-Bundle: org.drools.core; bundle-version="5.1.1"
...
org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Package uses conflict: Import-Package: com.sun.tools.xjc; version="0.0.0"
...

--> Der letzter Fehler (Package Conflict) bezieht sich auf das Drools-Core Bundle aber der ist sonst auch immer da und hat nie zu Problemen geführt.

Per OSGi (Equinox) "ss" Befehl gibt er mir aus, das er das Drools-Core Bundle findet, es aber nicht resolved ondern nur installiert ist. Die einzige Abhängigkeit von dem Drools-Core Bundle ist allerdings das Drools-API Bundle. Dieses ist hingegen active...

Code:
112	ACTIVE      org.drools.api_5.1.1
113	INSTALLED   org.drools.bpmn2_5.1.1
114	INSTALLED   org.drools.compiler_5.1.1
115	INSTALLED   org.drools.core_5.1.1
116	INSTALLED   org.drools.decisiontables_5.1.1

Sollte ich vllt. einen Ordner von meinem Galileo-Eclipse mal komplett löschen? (z.B.: configuration\org.eclipse.osgi\bundles) Können dort vllt. Dateien beschädigt sein?
 
M

maki

Gast
Was passiert denn wenn du das core bundle von der OSGi Konsole aus starten willst?

Dateien können prizipiell immer kaputt sein, 5.1.1 scheint noch recht "frisch" zu sein.
 

Zitzit

Mitglied
Bei "start 115" (115 = Core Bundle):
Code:
org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Package uses conflict: Import-Package: com.sun.tools.xjc; version="0.0.0"

Hmmm... anscheind kommt er nun mit dem Package Conflict gar nicht mehr klar und startet es deshalb überhaupt nicht mehr. Aber wie kommt das von heute auf morgen? Bzw. kann ich irgendwo sehen welche Bundles "com.sun.tools.xjc" exportieren? Dann würde ich mal probieren eins aus zu schalten. In der Manifest.MF des Core Bundles sehe ich auch gerade das keine Version für dieses benötigte Package angegeben ist (deshalb version="0.0.0"). --> Zusätlich ist noch die Option: DynamicImport-Package: * gesetzt.

Aber ist nciht genau dies der vorteil von OSGi? Das man mehrere gleiche Packages haben kann und OSGi wählt dann einfach eins aus? (zumindest habe ich den Grundgedanken so verstanden)
 

Zitzit

Mitglied
Auf meinem anderen Laptop (L2) habe ich nun die selben Probleme...

Auszüge von meinem anderen Laptop (L2):
Java:
com.sun.tools.xjc; version="2.1.7"<com.springsource.com.sun.tools.xjc_2.1.7 [9]>
  com.unihildesheim.iis.integration.drools.impl_0.7.0 [72] imports
  org.drools.api_5.1.1 [113] imports
  org.drools.core_5.1.1 [114] imports

Meine Bundles (71: Interfaces 72: Implementierung):
Java:
71	ACTIVE      com.unihildesheim.iis.integration.drools_0.7.0
72	RESOLVED    com.unihildesheim.iis.integration.drools.impl_0.7.0

Drools Bundles:
Java:
113	ACTIVE      org.drools.api_5.1.1
114	ACTIVE      org.drools.compiler_5.1.1
115	ACTIVE      org.drools.core_5.1.1
116	ACTIVE      org.drools.decisiontables_5.1.1
117	ACTIVE      org.drools.osgi.wrapper.jxls-reader_0.9.8
118	ACTIVE      org.drools.osgi.wrapper.mvel2_2.0.16

Derzeit habe ich diverse Drools Bundles sowohl in der Target Platform (Bin/Jar Format) als auch per Maven-SRC-import im Workspace. Egal ob ich die Bin oder Src Bundles starte, erhalte ich dieselben Validierungsfehler (auf beiden Laptops). Hier ein Screen der Bundle Validation (in Run-Configuration):

67804860.jpg


Auf dem einen Laptop (L2) startet er alle Drools Bundles aber mein Implementierungs-Bundle nicht (siehe oben, Bundle ID:72). --> Trotz der Validierungsfehler (siehe Bild). Das manuelle starten per "start 72" funktioniert nicht, da er dann diverse BundleExceptions schmeißt:
Java:
org.osgi.framework.BundleException: The activator com.unihildesheim.iis.integration.drools.impl.activator.Activator for bundle com.unihildesheim.iis.integration.drools.impl is invalid
...
Caused by: java.lang.NoClassDefFoundError: BundleActivator
...

Allerdings finde ich dieses Verhalten wiederum sinnig, da er mit ja schließlich in der Manifest.MF die Package-Import Fehler anzeigt.

Auf dem anderen Laptop (L1) startet er erst garnicht die Drools Bundles und wirft die besagten Fehler aus den vorangegangenen Posts.

Auszüge von meinem anderen Laptop (L1):
Java:
com.sun.tools.xjc; version="2.1.7"<com.springsource.com.sun.tools.xjc_2.1.7 [9]>
(Die benötigten imports vom Core und Compiler Bundle werden nciht aufgelistet weil diese nicht gestartet wurden, denk ich mal?)

Meine Bundles (71: Interfaces 72: Implementierung):
Java:
71	ACTIVE      com.unihildesheim.iis.integration.drools_0.7.0
72	INSTALLED  com.unihildesheim.iis.integration.drools.impl_0.7.0

Drools Bundles:
Java:
112	ACTIVE      org.drools.api_5.1.1
113	INSTALLED org.drools.compiler_5.1.1
114	INSTALLED org.drools.core_5.1.1
115	ACTIVE      org.drools.decisiontables_5.1.1
116	ACTIVE      org.drools.osgi.wrapper.jxls-reader_0.9.8
117	ACTIVE      org.drools.osgi.wrapper.mvel2_2.0.16

Vielen Dank jetzt schonmal für die schnelle und umfangreiche Hilfe ^^ Es wird heller im Tunnel ;)
 
Zuletzt bearbeitet:

Zitzit

Mitglied
Ok, denke ich habe eine Lösung gefunden die ich jetzt versuche umzusetzen: Diagnosing OSGi uses conflicts | SpringSource Team Blog

Java:
osgi> diag 72
reference:file:/D:/workspaces/drool-smila/trunk/com.unihildesheim.iis.integration.drools.impl/ [72]
  No unresolved constraints.

osgi> diag 115
reference:file:/D:/workspaces/drool-smila/trunk/SMILA_0.7/plugins/drools-core-5.1.1.jar [115]
  No unresolved constraints.

Meine Theorie:
Wie man per Diag sieht, müsste mein Bundle (72) eigentlich starten. Da allerdings die Drools Libs einen DynamicPackage-Import für alle Packages also auch für das com.sun.tools.xjc benutzen, scheint er dieses Problem beim Diag Befehl noch nicht zu sehen, da das Drools Core Bundle das Package erst zur Laufzeit sucht. Erst wenn ich versuche mein Bundle zu starten sieht Equinox das da ein Package Conflict ist und killt den Bundle Start.

Am meisten interessiert mich jetzt vorallem ob ich am Ende mist gemacht habe oder die Drools Bundles etwas verplant haben ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A OSGI und Datemodell Allgemeines EE 5
G Interface und Implementierung getrennt Allgemeines EE 2
J Tomcat mit eigener Session-Implementierung Allgemeines EE 15
D Fehler wegen Rest-Schnittstelle Allgemeines EE 4
A JPA Fehler beim JPA-Projekt Allgemeines EE 12
pkm "Unable to cache bundle"-Fehler bei Apache Karaf Allgemeines EE 0
H JWebUnit Fehler: java.lang.NoClassDefFoundError: org/apache/regexp/RESyntaxException Allgemeines EE 24
mor16Euro Servlet Fehler code: The requested resource is not available Allgemeines EE 7
M Servlet Fehler beim Start der Serveranwendung Allgemeines EE 3
N Fehler 403 bei Sessiontimeout mit <security-constraint> Allgemeines EE 0
Q Fehler InitialContext.lookup Allgemeines EE 3
A LDAP Auth Fehler Allgemeines EE 5
J Fehler beim deployen von seam 2.2.2-Projekt Allgemeines EE 9
Ezra BIRT - Report erzeugt Fehler Allgemeines EE 26
JimPanse Tomcat Fehler nach redeploy Allgemeines EE 5
H fehler beim deployen von ear file Allgemeines EE 2
E Fehler bei SQL Abfrage MAX Allgemeines EE 10
M Fehler bei Javamail Session mit Glassfish 3 Allgemeines EE 3
C WebStart Fehler nach update auf Java 1.6 Allgemeines EE 2
A jsf: Servlet aufrufen, wie geht das? web.xml Fehler? Allgemeines EE 13
M Fehler in JSF Anwendung Allgemeines EE 4
J Konvertierungs-Fehler: Wert ''{0}'' für Modell ''{1}'' Allgemeines EE 10
N Jboss als Dienst -> Fehler 1053 Allgemeines EE 1
G Fehler, wenn <f:view> Tag als Startseite Allgemeines EE 2
R auf der Suche nach dem Fehler,Sessions + Arrays Allgemeines EE 4
K Datatable Löschen Fehler Allgemeines EE 6
A Problem / Fehler beim Einbinden einer Klasse in ein JSP Allgemeines EE 20
G JSTL Fehler Allgemeines EE 2
F Fehler beim deployen von jsp und servlet Allgemeines EE 7
F Buildscript Fehler weblogic/Deployer Allgemeines EE 2
T Jsp die mehrere Servlets aufruft erzeugt Fehler Allgemeines EE 10
M Fehler aufruf von Index.html Allgemeines EE 7
K [Sun AppServer 8.1] Fehler beim deployen Allgemeines EE 12
M EJB Fehler Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben