Forum: PC-Programmierung "org.eclipse.osgi_XX" startet in Konsole nicht (richtig)


von Robert B. (rsb89)


Lesenswert?

Hallo zusammen,

ich arbeite mich gerade in die Entwicklung von Anwendungen mit OSGi ein. 
Dafür verwende ich Eclipse Equinox und in Eclipse klappt auch alles 
wunderbar mit der OSGi-Console und die Plugins laufen auch.

Wenn ich jetzt aber "org.eclipse.osgi_XX" (XX = Versionsnummer) in der 
Eingabeaufforderung von Windows aufrufe starten es scheinbar nicht 
richtig. Jedenfalls erscheint nicht das "osgi>" am Zeilenanfang und ich 
kann auch keine Eingaben tätigen. Hatte jemand ein ähnliches Problem 
oder hat eine Idee was ich falsch mache? Einen Vorschlag für ein anderes 
OSGi-Framework nehme ich auch gern an, dann sieht man gleich inwieweit 
die Plugins portabel sind.

MfG von der Ostsee

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Willkommen in der Welt von OSGi. Wo viel versprochen wird, wenig 
gehalten wird und noch weniger funktioniert. Wo dir ein Traum von 
Flexibilität verkauft wird, Flexibilität die du nicht brauchst, die es 
nicht umsonst gibt und nur in Ausnahmefällen funktioniert. Und wo 
Debuggen ein Job für einen ist der Vater und Mutter erschlagen hat.

Wenn du dich weiter ärgern willst: Apache Felix.

von Robert B. (rsb89)


Lesenswert?

Hannes Jaeger schrieb:
> Wenn du dich weiter ärgern willst: Apache Felix.

Habe hier eigentlich eher auf Hilfe und nicht Stoff für weitere 
Frustration gehofft. Habe es trotzdem mal gegoogelt und auch 
(irgend)etwas davon scheint es auch in Eclipse zu geben.

Ein Ansatz meinerseits: Kann es etwas mit der installierten JAVA-Version 
zu tun haben? Habe JAVA 7 auf meinem Rechner.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Robert B. schrieb:
> ... starten es scheinbar nicht richtig.

Möglicherweise fehlen dann bestimmte Umgebungsvariablen, die Eclipse 
mitliefert, aber nicht gesetzt sind, wenn Du es "von Hand" aufrufst.

Oder die Art des Aufrufs selbst unterscheidet sich; Eclipse verwendet 
möglicherweise Kommandozeilenargumente, die Du nicht verwendest.

Herausfinden kannst Du das mit dem ProcessExplorer, sieh Dir dazu die 
Eigenschaften des von Eclipse erzeugten "osgi"-Prozesses an (hier werden 
sowohl die Kommandozeilenparameter als auch die Umgebungsvariablen 
angezeigt), und vergleiche das mit den Eigenschaften des "von Hand" 
erzeugten "osgi"-Prozesses. Wenn das eine Java-Anwendung ist, kannst Du 
auch sehen, welche Java-Runtime verwendet wird.

von Tux (Gast)


Lesenswert?

Toll dass da jemand auf OSGi herumhackt und dann Felix empfielt: eine 
weitere OSGi-Implementierung ...

Zum Thema: Wie startest du dein Programm genau? Ich verwende bislang nur 
RCP und dort kann ich mit "./meineAnwendung -console" die exportierte 
Anwendung starten.

von Robert B. (rsb89)


Lesenswert?

Tux schrieb:
> Wie startest du dein Programm genau?

Ich gehe in den "eclipse/plugin"-Ordner und dort rufe ich die 
Eingabeaufforderung auf. Da rufe ich dann die .jar Datei auf.
Mein vollständiger Aufruf:
1
C:\Program Files\eclipse\plugins>java -jar org.eclipse.osgi_3.9.1.v20140110-1610.jar -console

Ich werde mir das jetzt mal im Process Explorer angucken. Schon mal 
Danke für die Hilfe!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ein weiterer Punkt, den Du mit dem Process Explorer überprüfen solltest, 
ist das Arbeitsverzeichnis, d.h. das Verzeichnis, aus dem heraus Java 
gestartet wird. Bei Deinem Beispiel ist das "C:\Program 
Files\eclipse\plugins".

Und außerdem solltest Du sehen, welcher Java-Interpreter verwendet wird. 
Du rufst "java" auf; es gibt aber auch "javaw".

All das zeigt der Process Explorer.

Viel Erfolg.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Hannes Jaeger schrieb:
> und noch weniger funktioniert

Komisch, bei mir funktioniert das alles wunderprächtig, aber ich lese 
auch nicht nur die Werbebroschüre sondern das Datenblatt (Spec+Docu des 
Frameworks).

Rufus Τ. Firefly schrieb:
> Und außerdem solltest Du sehen, welcher Java-Interpreter verwendet wird.
> Du rufst "java" auf; es gibt aber auch "javaw".

javaw ist aber im Prinzip nur die "Konsolenfensterfreie" Version

Robert B. schrieb:
> Ein Ansatz meinerseits: Kann es etwas mit der installierten JAVA-Version
> zu tun haben? Habe JAVA 7 auf meinem Rechner.

Nein das ist völlig egal...

Robert B. schrieb:
> Habe es trotzdem mal gegoogelt und auch (irgend)etwas davon scheint es
> auch in Eclipse zu geben

Erstmal solltest du unterschieden zwischen OSGi Runtime und 
Implementierung. Sowohl Equinox als auch Felix bieten eine 
Implementierung für das OSGi-Framework und Implementierungen diverser 
(optionaler) Services. Die kann man dann auch mischen. Ich nutze z.B. 
Equinox als OSGi-Framework, aber diverse Standardservices von Apache 
Felix die mir dort "besser" gefallen.

Wenn du aus Eclipse heraus etwas startest werden gewisse Runtimeoptionen 
mitgegeben um es zu erleichtern. Gewissermaßen eine Eclipse Installation 
ohne GUI. Willst du außerhalb von Eclipse das ganze laufen lassen hast 
du zwei Möglichkeiten:
- Du definierst ein Produkt und exportierst dieses mit der Option 
"Include Native launcher Artifacts", dann erhälst du gewissermaßendas, 
was Eclipse auf deren Seite als DL anbietet: Ein (nativer) Launcher, 
welcher aus einer vordefinierten Verzeichnisstruktur dir das Framework 
und die Konfig ausliest.
- Du nutzt nicht den Launcher, dann musst du das "start-jar" passend 
selbst aufrufen, die Doku dafür findest du hier: 
http://www.eclipse.org/equinox/documents/quickstart-framework.php dorst 
steht einaml wie die Konfig aussehen muss, und wie man das auch 
konfigurieren kann das er alles was in Plugins liegt automatisch lädt.

Sowas gibt es auch für Felix, da läuft es halt etwas anders: 
http://felix.apache.org/documentation/subprojects/apache-felix-framework/apache-felix-framework-usage-documentation.html

Falls dir das alles zu "Basic" ist, kannst du auch auf eine "OSGi based 
runtime" wie z.B. Karaf (https://karaf.apache.org/) zurückgreifen, 
welche ein völlig vorkonfiguriertes OSGi Produkt liefert, incl. 
Betriebsystemintegration für Hintergrunddiesnste wo du ggf. nurnoch 
deine Bundles reindeployen musst.

*Zu deinem Problem*: Eclipse hat in der "neuen" Version die 
Konsoleimplementierung gewechselt. Siehe hier: 
https://bugs.eclipse.org/bugs/show_bug.cgi?id=371101
d.h. es ist ein (leider in obiger Doku nicht explizit genannter da auf 
alte Version bezogener) zusätzlicher Aufrufparameter nötig:
1
 java -Dosgi.console.enable.builtin=true -jar org.eclipse.osgi_3.9.1.v20140110-1610.jar -console
sollte dir die gewohnte Konsole hervorzaubern.
1
laeubi:/tmp/osgi$ java -Dosgi.console.enable.builtin=true -jar org.eclipse.osgi_3.9.1.v20140110-1610.jar -console
2
3
osgi> ss
4
5
Framework is launched.
6
7
id  State       Bundle
8
0  ACTIVE      org.eclipse.osgi_3.9.1.v20140110-1610
9
10
osgi>

: Bearbeitet durch User
von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Läubi .. schrieb:
> Hannes Jaeger schrieb:
>> und noch weniger funktioniert
>
> Komisch, bei mir funktioniert das alles wunderprächtig,

Tschuldigung, aber wenn du so einen Scheiß
>
1
 java -Dosgi.console.enable.builtin=true -jar 
2
> org.eclipse.osgi_3.9.1.v20140110-1610.jar -console

für normal hältst ...

Das ist nämlich genau das typische OSGi Rumgewichse. Angeblich läuft 
alles automatisch, aber damit es dann läuft darf man 12-stellige 
Versionsnummern eintippen. Für Akademiker die sonst nichts zu tun haben 
mag das völlig OK sein. Für Leute, die echte Software für echte Kunden 
unter echtem Zeitdruck mit echten Robustheits- und 
Performance-Anforderungen nicht nur einmal, sondern wiederholbar, zum 
Laufen zu bekommen müssen ist dieses OSGI-Gewichse mit nur eine sinnlose 
Qual.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Hannes Jaeger schrieb:
> ...

Was soll den dieser emotionale Ausbruch jetzt?

Ich habe hier den absoluten Low-Level Aufruf genannt, und das der 
DATEINAME für die Jar-File eine Versionsnummer enthält ist doch wohl 
absolut üblich im Java Umfeld.

Und ich habe einen Link zu einem Produkt genannt, welches all diesen 
Low-Level Kram abnimmt.

Falls du dennoch ein einer echten Diskussion mit Argumenten interessiert 
bist, mach doch bitte eine eigenen Thread auf, das hilft dem TE in 
keinster Weise weiter. Ebensoweinig ob Java, Basic, Adurino, C oder 
Assembler die wahren Heilsbringer sind.

Hannes Jaeger schrieb:
> ür Akademiker die sonst nichts zu tun haben mag das völlig OK sein. Für
> Leute, die echte Software für echte Kunden unter echtem Zeitdruck mit
> echten Robustheits- und Performance-Anforderungen nicht nur einmal

Schau dir einfach einmal an welche Firmen hinter OSGi stehen und das 
einsetzen, da sind ganz sicher nicht nur Akademiker dabei. Also einfach 
mal Scheuklappen ab, und die eigene Meinung (welche dir ja unbenommen 
ist) nicht als die Ultimative Wahrheit sehen. Oder mal etwas bei dem 
schönen Wetter an die frische Luft gehen, dann muss man nicht in solchem 
unqualifiziertem Ton Dinge runtermachen welche man nicht versteht oder 
nicht "mag".

von Robert B. (rsb89)


Lesenswert?

@Läubi:
Vielen Dank! Es läuft nun mit dem zusätzlichen Parameter beim Aufruf.

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.