Eclipse-Anwendungen unter Windows 8 – ist das ein Problem?

Judith Lungstraß

Im Gegensatz zu Windows RT rühmt sich Windows 8 mit seiner Rückwärtskompatibilität zu älteren Versionen – beispielsweise sollen alle Windows-7-Anwendungen auch unter dem neuen Betriebssystem laufen. Eclipse-Anwendungen unter Windows 8 laufen zu lassen, dürfte also eigentlich kein großes Problem sein, dachten wir uns.

Und das ist es auch meistens nicht. Außer in einem Spezialfall, den uns Tillmann Seidel von EclipseSource in seinem Blog aufzeigt. Dieser kommt zum Tragen bei der Kombination aus nativem Code im Eclipse Plugin und einer älteren Version von Equinox, also Version 3.7.2 und früher.

In diesem Falle startet unsere Eclipse-Anwendung nicht, da ein Bundle nicht aufgelöst werden kann und es gibt folgende Fehlermeldung: !MESSAGE Missing host Bundle-NativeCode_0.0.0. In verschiedenen Betriebssystemen kommen nämlich unterschiedliche native Bibliotheken zum Einsatz. Dass die, je nach System, richtige Bibliothek geladen wird, garantiert normalerweise OSGi, in Windows-Versionen wird normalerweise helper.dll geladen. Nur eben nicht unter Windows 8.

Der Grund liegt darin, dass OSGi nach einer Bibliothek mit mindestens einer Bedingung true sucht – solch eine kann im Fall von Windows 8 nicht gefunden werden. Eine Bedingung darunter ist die osname Property, welche mit dem von der Java VM ausgefüllten Wert der System Property org.osgi.framework.os.name verglichen wird. Equinox listet in einem Mapping Table die gängigen Bezeichnungen für ein Betriebssystem, etwa „Windows7“, „Windows 7“ oder „Win7“. Und für Windows 8 ist eben in älteren Versionen von Equinox ganz einfach kein Eintrag vorhanden. Diesen gibt es erst ab Juno 3.8.

Um das Problem zu lösen, gibt es im Grunde genommen drei verschiedene Ansätze. So könnte man, um das Offensichtliche zu nennen, auf eine neuere Version von Equinox aktualisieren. Oder man erweitert das Manifest um die Bedingungen osname=Windows8, osname=Windows 8 und osname=Win8. Zuletzt ist es auch noch möglich, die JVM mit der System Property -Dorg.osgi.framework.os.name=win32 zu starten.

Geschrieben von
Judith Lungstraß
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.