Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Der Import lotus kann nicht aufgelöst werden
chriss76:
Hallo Thomas,
sieht schon besser aus!
Im Debug-Modus komme ich jetzt weiter, allerdings fehlt immer noch etwas!
Die Klasse Notesfactory wird auch nicht gefunden!?
Nur damit wir uns nicht mißverstehen:
Ich will mit einem Stückchen Javacode/Ecplise auf unseren Notesserver (Windows Domino6) im Netzwerk zu greifen!
Chris
Thomator:
Hi Chris,
schon klar. Dazu ist es notwendig, dass das Programm, das in Eclipse ja lokal ausgeführt wird, das Notes.jar einbindet. Die native Schnittstelle wiederum benutzt die dll 'nlsxbe'. Heißt, die Methoden in der dll, die in C programmiert und als Maschinencode vorliegen, werden nativ von den Java-Functions benutzt.
Also muss die JVM auch den Pfad zur entsprechenden dll finden, um diese zur Laufzeit 'linken' zu können.
Wegen dem Fehler: Kannst Du mal den Quellcode posten? Da kann ich ma draufschauen...
Welches Notes-Jar benutzt Du?
Thomas
chriss76:
Hallo Thomas,
Auzug Coding:
package test;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.net.*;
import lotus.domino.*;
//Anweisung um den Java Compiler mitzuteilen, wo er die Notesklassen findet.
/**
*
* @author petter_r
*/
public class TEST1 {
/** Creates a new instance of testprogramm In unserem Beispiel brauchen wir keine Instance */
//public TEST1() {
//}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
NotesThread.sinitThread(); //Beim lokalen Zugriff nicht DIIOP muss der Thread erst für Domino initialisiert werden.
Session ses=null; //Sessionvariable definieren.
try { //Da Notes Klassen Exceptions werfen können sollte man diese auch abfangen.
System.out.println(ses);
'bis hier gibt es kein Problem, NotesFactory.createSession(); lokale Variable nicht verfügbar
ses = NotesFactory.createSession(); //Erzeugen eines Sessionobjekts
Database db=ses.getDatabase("UnserSERVER","mail/xxxxxx.nsf"); // Öffnen einer Datenbank bitte das anpassen an euer Umfeld z. B. Maildatenbank.
System.out.println("Datenbank hat folgenden Dateiname:"+db.getFileName());
System.out.println("Datenbank wurde zuletzt volltextindiziert am "+db.getLastFTIndexed().toString());
System.out.println("Datenbankgrösse "+db.getSize());
System.out.println("Host name and Adresse: "+InetAddress.getLocalHost());
..........
Wo soll ich nach der notes.jar Version suchen?
Vg
Chris
flaite:
Die entsprechenden Einstellungen können wirklich tricky sein. V.a. weil die Meldungen nicht gerade besonders aufschlussreich sind.
Hier ein vernünftiges Vorgehen:
1. Finde heraus, ob du local oder über die corba infrastruktur auf Notes zugreifst. Irgendwo wirst du die NotesSession (lotus.domino.Session) mit den createSession()-factory Methoden von NotesFactory erzeugen. Je nach dem welche der verschienden überladene createSession() Methode (unterschiedliche Parameter) aufgerufen wird, wird eine corba oder eine local session erzeugt. Man kann mit local sessions auch auf Server zugreifen. Der Bezeichner local bezieht sich rein auf - hm.hm.hm. sagen wir - endpunkt der Verbindung des Clients -.
IN DEINEM FALL IST ES LOCAL
2. Ich gehe jetzt davon aus, du hast eine local Verbindung.
3. Schaue dir die PATH Umgebungsvariable an. Hier muss der Ordner des Notes-Programmsverzeichnis des CLIENTS drinstehen. Und zwar DEINE AKTUELLE VERSION. ALS ERSTES. Eine Menge Spezialisten haben vor dem aktuellen Eintrag, irgendwelche historischen, aber noch auf der Festplatte vorhandene Versionen drinstehen. Beliebt sind auch Server vor dem Client oder ähnlicher offensichtlicher Unsinn.
Also nochmal. Du hast deinen Notes CLIENT in C:\programme\lotus\notes installiert.
Schreib das möglichst weit vorne in den PATH deines OS.
Du bekommst übrigens von der Java-VM sehr verbose Meldungen, ob das alles stimmt, wenn du folgenden Java-VM Parameter setzt. -> -verbose:jni . In Eclipse geht das in diesem Dialog der kommt, wenn man auf run oder debug mit 3 Punkten drückt.
4. Notwendig für lokal ist auch diese Konstruktion:
--- Code: ---NotesThread.sinitThread();
nSession = NotesFactory.createSession();
NotesThread.stermThread();
--- Ende Code ---
also NotesThread.sinitThread() und stermThread()
5. Im Classpath muß eine aktuelle Version von Notes.jar sein.
6. import lotus.domino.
Gruß Axel
Thomator:
Hi noch ma,
@Axel:
Grundsätzlich Zustimmung in allen Punkten, aber:
Zitat:
5. Im Classpath muß eine aktuelle Version von Notes.jar sein.
Die Version des Notes.jar's muss die gleiche sein, wie die der dll im Programmverzeichnis, sonst knallt es Recht schnell (gerade, wenn man ein Notes.jar R6 mit einer lokalen Installation R5 verwenden will).
@Chris:
Das könnte übrigens genau das Problem sein...
Thomas
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln