equinox OSGi EclipseStarter.startup NullPointerException

Status
Nicht offen für weitere Antworten.
B

bananenkasper

Gast
Hallo zusammen,

ich möchte die Equinox Umgebung programmatisch starten.
Dazu benutze ich folgenden Code:

Java:
class EquinoxRunner {

	private EquinoxRunner() {

	}

	public static BundleContext start(String path) throws Exception {
		if (path != null)
			setProperties(path);
		return EclipseStarter.startup(new String[] { "-console", "-clean" },
				null);
	}

	private static void setProperties(String path) throws IOException {
		Properties properties = new Properties();
		properties.load(new FileInputStream(new File(path)));
		EclipseStarter.setInitialProperties(properties);
	}
}

Starte ich das Programm direkt aus Eclipse läuft es problemlos.
Wenn ich es allerdings als "Runnable JarFile" exportiere, und dann über die Console starte, bekomme ich eine NullPointerException:
Code:
java.lang.NullPointerException
	at java.io.File.<init>(File.java:277)
	at org.eclipse.osgi.internal.baseadaptor.BaseStorage.getBundleContent(BaseStorage.java:656)
	at org.eclipse.osgi.internal.baseadaptor.BaseStorage.createBundleFile(BaseStorage.java:665)
	at org.eclipse.osgi.baseadaptor.BaseAdaptor.createBundleFile(BaseAdaptor.java:466)
	at org.eclipse.osgi.baseadaptor.BaseData.getBundleFile(BaseData.java:394)
	at org.eclipse.osgi.baseadaptor.BaseData.getEntry0(BaseData.java:111)
	at org.eclipse.osgi.baseadaptor.BaseData.getEntry(BaseData.java:102)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.getEntry0(AbstractBundle.java:1232)
	at org.eclipse.osgi.framework.internal.core.Framework.findInSystemBundle(Framework.java:558)
	at org.eclipse.osgi.framework.internal.core.Framework.findVMProfile(Framework.java:504)
	at org.eclipse.osgi.framework.internal.core.Framework.loadVMProfile(Framework.java:420)
	at org.eclipse.osgi.framework.internal.core.Framework.initialize(Framework.java:224)
	at org.eclipse.osgi.framework.internal.core.Framework.<init>(Framework.java:157)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:286)
	at meinjarfile.starter.EquinoxRunner.start(EquinoxRunner.java:20)
 

Wildcard

Top Contributor
Als runnable jar? Ob das überhaupt funktionieren kann...
Das ist eigentlich nur für sehr einfache Projekte brauchbar (die jars werden entpackt und in dein jar kopiert).
Ab 3.5 wird glaube ich ein eigener Classloader untergeschoben und spätestens dann wird es mit den OSGi Classloader Hierarchien nicht mehr passen.
 
B

bananenkasper

Gast
Es ist möglich, Equniox programmatisch zu starten.
Über die statische Methode "EclipseStarter.startup()", die einem den BundleContext zurück gibt.
Um Zugriff auf die Methode zu haben, muss man "org.eclipse.osgi_3.x...jar" im ClassPath haben.
Ich habe in Eclipse 3.5 das jar wie jede andere externe lib den "Refeferenced Libraries" hinzugefügt.

Dann habe ich das Projekt als "Runnable Jar" exportiert. Dabei kann man seid Eclipse 3.5 eine Auswahl treffen, wie externe libs gehandhabt werden sollen: Unter Anderem steht zur Auswahl, sie in dein jar zu extrahieren, oder auch als jar-in-jar file in dein jar zu packen.
Ich habe beides (ohne Erfolg) ausprobiert.

Wie gesagt funktioniert läuft das ganze, wenn ich es direkt unter Eclipse ausführe.

Ich vermute daher, dass es ein Problem mit dem Eclipse Export ist.

Ab 3.5 wird glaube ich ein eigener Classloader untergeschoben und spätestens dann wird es mit den OSGi Classloader Hierarchien nicht mehr passen.

Das verstehe ich nicht... Was meinst du?
 

Wildcard

Top Contributor
Was ich meine ist: ich denke nicht das du mit dem Runnable Jar weit kommen wirst, das ist für einfache Projekte, nicht für ein OSGi Framework mit komplexem Classloading.
Exportier deine jar, pack die anderen jars daneben und trag sie als Classpath im Manifest ein.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z MySQL-Treiber in RAP-Anwendung für Jetty im OSGI- Equinox- Maven-Dschungel Plattformprogrammierung 0
E OSGi Equinox HttpService only supports servlet 2.1 specification. Plattformprogrammierung 2
S (OSGI - EQUINOX) Welche Eclipse IDE? Plattformprogrammierung 3
B OSGi, Equinox, Exceptions werden "ignoriert" Plattformprogrammierung 21
D Problem mit Synth Painter und OSGi (Equinox) Plattformprogrammierung 8
S RCP Equinox launcher error bei RCP-Start Plattformprogrammierung 2
C RCP Verständnisfrage Eclipse/Equinox Plattformprogrammierung 4
S Equinox: plugins und features Plattformprogrammierung 8
W GWT in Equinox Plattformprogrammierung 3
B How to use CommandInterpreter.execute - Equinox Plattformprogrammierung 2
G Equinox Dependencies Plattformprogrammierung 3
byte Equinox - Klasse aus Plug-In wird nicht gefunden Plattformprogrammierung 3
X Equinox und javax Plattformprogrammierung 9
F OSGi und root rechte Plattformprogrammierung 2
Shams Antbuild - Problem bei OSGi Anfängertutorial Plattformprogrammierung 0
T OSGi OSGI bundle bauen org.apache.xerces Plattformprogrammierung 3
G OSGi Bundle-ClassPath Plattformprogrammierung 3
P OSGi registerService Plattformprogrammierung 3
H OSGi OSGi + Logback + slf4j - Eclipse Run Configuration Plattformprogrammierung 7
G OSGI bundleChanged Plattformprogrammierung 2
X Probleme mit dem OSGi-Framework Plattformprogrammierung 3
S OSGi Declarative Service Cardinality Plattformprogrammierung 6
Kr0e OSGI - Anfängerfragen Plattformprogrammierung 3
K OSGi Verteilte Anwendung? Plattformprogrammierung 9
B OSGi Einsteiger OSGi-Applikation Plattformprogrammierung 9
N OSGi: Ressourcen gezielt aus bestimmten Modulen laden? Plattformprogrammierung 4
borobudur OSGi OSGi Blueprint Integrationstests Plattformprogrammierung 6
S OSGi Filter Syntax Plattformprogrammierung 2
N OSGi Dependency Loading Plattformprogrammierung 2
S OSGi Bibliothek für alle Plattformprogrammierung 5
H OSGI mit Eclipse und Maven Plattformprogrammierung 5
X OSGi Splash ohne product Plattformprogrammierung 2
G OSGi: Service registrieren Plattformprogrammierung 2
lumo OSGI Service - ServiceReference Plattformprogrammierung 3
G [osgi] bundle spezifische properties Plattformprogrammierung 5
DEvent [osgi] Services implementieren Plattformprogrammierung 2
C RCP Applikation starten als OSGi Bundle Plattformprogrammierung 2
B OSGi, Euqinox, innherhalb vom Bundle Pfad des zugehörigen jar-files ermitteln Plattformprogrammierung 6
C OSGi, Hibernate und welche Datenbank? Plattformprogrammierung 4
astralarse Custom OSGi Launcher mit config.ini Plattformprogrammierung 6
C Eclipse - Externe OSGi bundles adden Plattformprogrammierung 7
F OSGi Anwendungsdesign Plattformprogrammierung 3
N OSGI in Netbeans? Plattformprogrammierung 5
X OSGi und RCP Plattformprogrammierung 15
C OSGi shutdown Plattformprogrammierung 4
D OSGi JSR296 (Swing Application Framework) - Konzeptionsfrage Plattformprogrammierung 2
G Osgi Plattformprogrammierung 5
A Plugin konzepte: OSGI oder JPF? Plattformprogrammierung 5
S OSGI Framework Knopflerfish Plattformprogrammierung 11
A RCP java.lang.ClassNotFoundException: org.eclipse.core.runtime.adaptor.EclipseStarter Plattformprogrammierung 7
Z RCP - Feature, EclipseStarter Plattformprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben