Forum: PC-Programmierung OSGi Import kann nicht aufgelöst werden


von Robert B. (rsb89)


Lesenswert?

Hallo zusammen,

beim exportieren eines eclipse-PlugIn-Projekts bekomme ich eine 
.log-Datei mit (unter anderem) folgenden Fehlermeldungen:
"Der Import org.apache kann nicht aufgelöst werden"
"ObjectUtils kann nicht aufgelöst werden" (ist in 
org.apache.commonx-lang3 enthalten)

In eclipse bekomme ich keinen Fehler angezeigt, die entsprachende 
jar-Datei (commons-lang3-3.1.jar) befindet sich im Projektordner und ist 
auch in den Plug-in-Abhängikeiten aufgeführt. Wie bekomme ich es denn 
nun hin, dass das PlugIn erfolgreich exportiert wird?

von Robert B. (rsb89)


Lesenswert?

Wenn ich den Quellcode der jar-Dateien in das Projekt packe kommt der 
Fehler nicht, aber das kann doch nicht im Sinne des Erfinders sein.

von Kollege (Gast)


Lesenswert?

>> org.apache.commonx-lang

Ist das OSGi-fiziert?

von Robert B. (rsb89)


Lesenswert?

Kollege schrieb:
>>> org.apache.commonx-lang
>
> Ist das OSGi-fiziert?

Was meinst du mit OSGi-fiziert?

von Kollege (Gast)


Lesenswert?

Robert B. schrieb:
> Kollege schrieb:
>>>> org.apache.commonx-lang
>>
>> Ist das OSGi-fiziert?
>
> Was meinst du mit OSGi-fiziert?

Handelt es sich dabei um ein OSGi Bundle?

Du brauchst OSGI Bundles wenn du Eclipse Plugins schreiben möchtest, 
"normale" Jars reichen nicht.

Eclipse Orbit hat ein paar OSGi-fizierte Jars: 
http://download.eclipse.org/tools/orbit/downloads/

Das Spring Enterprise Repository auch: 
http://ebr.springsource.com/repository/app/

Kannst dir auch selbst welche erstellen: 
http://www.vogella.com/tutorials/EclipseJarToPlugin/article.html

Musst halt darauf achten, das die Abhängigkeiten "passen, d.h. diese 
müssen auch OSGi Bundles sein, ind er passenden Version.

Ansonsten ist http://www.vogella.com/ ein guter Einstieg in die 
Grundlagen.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Robert B. schrieb:
> beim exportieren eines eclipse-PlugIn-Projekts bekomme ich eine
> .log-Datei mit (unter anderem)

Immer ganz oben anfangen, wie beim Compilieren...

Robert B. schrieb:
> im Projektordner
Wie wo liegt die genau? Sowas gehört nicht in das Projekt sondern in die 
Targeplattform.

Robert B. schrieb:
> beim exportieren

Versuch mal die Option "Use classes compiled in the workspcae", der 
Eclipse eigene Exporter ist manchmal etwas supotimal.

von Robert B. (rsb89)


Lesenswert?

@Kollege:
Danke für die Links!

Läubi .. schrieb:
> Immer ganz oben anfangen, wie beim Compilieren...

Das sind die ersten Beiden Fehler in der .log-Datein ;)

Läubi .. schrieb:
> Wie wo liegt die genau?

Im Projektordner, wo auch die Projekt- und Classpath-Datei liegt.

von Robert B. (rsb89)


Lesenswert?

Ich habe jetzt aus den benötigten jar-Dateien ein Bundle erstellt, die 
entsprechenden Pakete exportiert und in meinem Projekt importiert.

Vielen Dank für die Hilfe!

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Robert B. schrieb:
> Im Projektordner, wo auch die Projekt- und Classpath-Datei liegt

Irgendwie ist dein Setup merkwürdig... Hast du überhaupt eine eigene 
Targeplatform definiert? Die Apache commons Sachen sind idr. schon 
eigenständige Bundles.

von Robert B. (rsb89)


Lesenswert?

Läubi .. schrieb:
> Hast du überhaupt eine eigene
> Targeplatform definiert?

Nein, in den von mir bearbeiteten Tutorials und Büchern stand davon auch 
nichts. Also keine EIGENE Zielplattform! Hab gelesen, dass man optimaler 
Weise bei der Erstellung des Plug-In-Projekts als Targetplatform "an 
OSGi framework" und dort standard auswählt. Damit soll es insgesamt 
portabler sein.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Robert B. schrieb:
> Hab gelesen, dass man optimaler Weise bei der Erstellung des
> Plug-In-Projekts als Targetplatform "an OSGi framework" und dort
> standard auswählt

Das ist auch korrekt. Trotzdem kannst du dir ein eigenes Target 
definiere, das hängt aber davon ab was du vor hast! Willst du OSGi 
Bundles entwickeln? Oder Eclipse Plugins für die IDE?

von Robert B. (rsb89)


Lesenswert?

Läubi .. schrieb:
> Willst du OSGi
> Bundles entwickeln? Oder Eclipse Plugins für die IDE?

OSGi Bundles

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Okay, dann vermutlich mit Equinox als OSGi Framework, dann würdest du 
folgendermaßen vorgehen:

- Neues (standard) Projekt (z.B. my.company.project.target) anlegen
- einen Ordner equinox
- einen (oder später mehr) Ordner lib
- eine neue Targetplattform

In den Ordner equinox legst du dann die gewünschte Equinox SDK (z.B. 
http://download.eclipse.org/equinox/drops/R-KeplerSR2-201402211700/index.php 
'All of Equinox')

In den Ordner lib legst du "externe" Bundles rein (vorher einmal prüfen 
das diese ein passendes OSGi-Manifest haben) wie z.B. die Apache Commons

Dann diese beiden Ordner in der Targetplatform hinzufügen, er zeigt dir 
dann an wieviele Plugins gefunden wurde.

Als letztes noch "Set as Targetplattform", wenn du etwas änderst ist der 
Schritt zu wiederholen.

Auf diese Weise entwickelst du gegen ein definiertes Target und musst 
nicht alle Bundles die du von extern beziehst noch selbst in deinem 
Eclipse Workspace vorhalten. Ansonsten entwickelst du nämlich gegen dein 
aktuelles Eclipse als Target und müsstest alle externen Libs in dein 
Eclipse installieren, was meist unvorteilhaft ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.