Hallo zusammen,
kann mir eventuell jemand bei der Konfiguration von Eclipse auf MacOS helfen?
Bislang habe ich Eclipse auf Windows genutzt und mit der Notes API auf Datenbanken zugriffen können.
Nur irgendwie bekomme ich Eclipse auf meinem MacBook nicht ans rennen:
Folgende Zeilen bekomme ich auf MacOS nicht ans fliegen:
import lotus.domino.*;
public class MainClass {
public static void main(String[] args) {
lotus.domino.Session s = null;
Database dbNames = null;
System.out.println("Start...");
NotesThread.sinitThread();
try {
s = NotesFactory.createSession();
dbNames = s.getDatabase("MeinDomino", "names.nsf");
System.out.println(dbNames.getTitle());
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Der fliegt dann immer bei der Zeile NotesThread.sinitThread();
mit dieser Meldung raus:
Start...
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lsxbe in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at lotus.domino.NotesThread.load(Unknown Source)
at lotus.domino.NotesThread.checkLoaded(Unknown Source)
at lotus.domino.NotesThread.sinitThread(Unknown Source)
at MainClass.main(MainClass.java:12)
Gehalten habe ich mich da an folgende Beschreibung.
http://www.lbenitez.com/2009/02/atlas-for-mac-is-here.html
Diese habe ich was die Notespfade angeht, auf meine 9er Client Version angepasst, aber leider kommt o.a. Meldung.
Hat jemand einen Tip, wie ich Eclipse zum Zugriff auf Notes auf meinem MacBook konfigurieren muss?
Hallo Ralf,
ich glaube ich gebe es nun auch auf unter MacOS und Eclipse zu entwicklen.
Ich bekomme es einfach nicht ans rennen.
Liegt vermutlich an der Umgebungsvariabel zu dem Pfad
DYLD_Library_PATH=/Applications/IBM\ Notes.app/Contents/MacOS
den bekomme ich einfach nicht gesetzt.
Angeblich soll man ja mit "export DYLD_Library_PATH=/Applications/IBM\ Notes.app/Contents/MacOS" setzen können. Aber gebe ich dann ein "printenv" dein, sehe ich die Variable nicht.
Und Eclipse rennt noch mit der folgenden Meldung gegen die Pumpe.
Start...
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Applications/IBM Notes.app/Contents/MacOS/liblsxbe.dylib: dlopen(/Applications/IBM Notes.app/Contents/MacOS/liblsxbe.dylib, 1): no suitable image found. Did find:
/Applications/IBM Notes.app/Contents/MacOS/liblsxbe.dylib: no matching architecture in universal wrapper
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at lotus.domino.NotesThread.load(Unknown Source)
at lotus.domino.NotesThread.checkLoaded(Unknown Source)
at lotus.domino.NotesThread.sinitThread(Unknown Source)
at MainClass.main(MainClass.java:12)
Da hilft auch das setzen der Eigenschaft von deinem letzten Screenshot (mit den korrekten MacOS Pfaden) auch nicht. :(
Also das finde ich nun mal interessant.
Ich habe mein Notesclient mal komplett deinstalliert um sicher zu gehen, dass ich den 64 Bit Client installiere/installiert habe.
Daher den 64 Bit Notesclient von der Passport Seite geholt und installiert.
Im Anschluss direkt mal das Fix Pack 4. Notes startete allerdings direkt mit einer Fehlermeldung und schmierte ab.
Lösung war, noch mal alles zu deinstallieren und nur den 64 Bit Notesclient für MacOS zu installieren. Ohne das Fixpack.
Finde ich ja mal ein wenig komisch, dass sich das Fixpack 4 installieren lies, obwohl dann der Client sich ins Nirwana verabschiedet hat.
Aber soweit so gut. 64 Bit Client von Notes ist drauf.
Nun zum Thema JVM:
Möchte ich mit dem Link von Dir die JVM Version prüfen, sagt mir Eclipse, dass
import com.sun.servicetag.SystemEnvironment;
nicht aufgelöst werden kann.
Ich habe auch nichts von Sun installiert, sondern diese 64 Bit Oracle Version
http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
Ist das nicht die korrekte Version?
Sun in Verbindung mit JVM und MacOS finde ich nicht wirklich etwas brauchbares.
Ma geh, muss man alles immer vorkauen. In dem Blogpost geht es darum wie man die Architektur des Betriebssystem herausbekommt vs. die der JVM. Ich bin davon ausgegangen, dass du in der Lage bist aus dem Post die für dich wichtige Info, nämlich die wie man die Architektur der JVM herausbekommt, herauszuziehen. Der Trick mit den internen Klassen, der bei deiner JVM möglicherweise gar nicht mehr funktioniert ist vollkommen unwichtig.
Also hier die Anweisung um die Architektur der JVM zu ermitteln:
System.out.println(System.getProperty("os.arch"));
Alles andere kannst du vergessen, da es dabei geht wie man mittels interner API die Architektur des OS herausbekommt.
Bezüglich FP4: Dir ist schon klar, dass der 64 bit Client wesentlich neuer als FP4 ist? Er ist sogar teilweise neuer als FP5 weil er größtenteils Notes 9.0.2 entspricht. Das kannst du einfach erkennen, wenn du dir mal die Version der Plugins des Client ansiehst. Das der Client dann kaputt ist, wenn du FP4 drüberknallst sollte wohl klar sein.
Noch eine Zusatzinfo bezüglich den sun.* Paketen. Sun war die Firma die Java erfunden hat und alle Klassen mit sun im Paketnamen sind Teil des internen API's und nicht Teil der Java Laufzeitumgebung. Das heißt, du kannst die API zwar verwenden, aber es ist weder garantiert, dass diese API in zukünftigen Versionen noch gleich funktioniert oder überhaupt vorhanden ist. Weiters hast du keine Garantie ob diese API in anderen Implementierungen der JVM z.B. die der IBM vorhanden ist. Deshalb normalerweise Fingerweg von diesen API's in Produktivumgebungen. Mittlerweile gehört Java zu Oracle, aber viele interne API's haben immer noch sun im Namen.
Grüße
Ralf
Alles klaro.
Nun klappt es und als Ergebnis kommt: getProperty() says => x86_64
Sieht ja gut aus.
In Eclipse kommt zwischenzeitlich diese Meldung:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Applications/IBM Notes.app/Contents/MacOS/liblsxbe.dylib: dlopen(/Applications/IBM Notes.app/Contents/MacOS/liblsxbe.dylib, 1): Library not loaded: @executable_path/libxmlproc.dylib
Referenced from: /Applications/IBM Notes.app/Contents/MacOS/liblsxbe.dylib
Reason: image not found
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at lotus.domino.NotesThread.load(Unknown Source)
at lotus.domino.NotesThread.checkLoaded(Unknown Source)
at lotus.domino.NotesThread.sinitThread(Unknown Source)
at MainClass.main(MainClass.java:12)
Gesetzt habe ich die Umgebungsvariable mit:
export DYLD_Library_PATH=/Applications/BM\ Notes.app/Contents/MacOS/
Allerdings mit printenv sehe ich den Eintrag nicht.
Und dann halt bei der eingebundenen Notes.jar den Verweis auf /Applications/IBM Notes.app wobei ich da via trial and error auch mal andere Pfade ausprobiert habe.
Z.B. /Applications/IBM Notes.app/Contents/MacOS
da dort die ganzen dylib zu finden sind.
Macht aber keinen Unterschied bei der Meldung.
Wäre nett, wenn Du noch mal schauen könntest bei Gelegenheit.