Java Notes Threat

  • Hallo,


    ich muß ein eigenständiges Java-Programm schreiben. Derzeit entwickle ich in Eclipse. In Eclipse funktioniert das Programm auch ganz ordentlich. Zur Veranschlaulichung habe ich ein einfaches Programm geschrieben, siehe unten.


    Wenn ich folgenden Befehl unter MSDOS eingebe, erhalte ich folgende Fehlermeldung:


    java -cp . NotesTest


    Exeption in thread "main" java.lang.NoClassDefFoundError: lotus/domino/NotesThread


    at NotesTest.main<NotesTest.java:16>


    Hat von Euch jemand eine Idee, wie ich diesen Fehler vermeiden kann? Irgendwie weiß das Programm nicht wo die die notes.jar zu finden ist. Ich habe schon den classpath angepaßt. Das hat aber auch nichts genützt.


    Vielen Dank schon mal für hilfreiche Tipps.


    Gruß, Grobber





    import lotus.domino.*;


    public class NotesTest {


    public static void main(String[] args) {
    NotesTest test = new NotesTest();
    try {
    lotus.domino.NotesThread.sinitThread(); // start thread
    Session s = NotesFactory.createSessionWithFullAccess("oscar");
    test.listDominoEmailAddresses(s);
    }catch(Exception e){
    e.printStackTrace();
    }
    finally {
    NotesThread.stermThread(); // must terminate every thread
    }
    }


    public void listDominoEmailAddresses(Session session){
    try {
    Database db = session.getDatabase("", "mycrmspace\\sugarCRMDomino.nsf");
    View viewEmailAddresses = db.getView("EmailAddresses");
    lotus.domino.Document docEmailAddress = null;
    docEmailAddress = viewEmailAddresses.getFirstDocument();

    while (docEmailAddress != null ) {
    System.out.println("Address: " + docEmailAddress.getItemValueString("EmailAddress"));
    docEmailAddress.save(true,false,true);
    docEmailAddress = viewEmailAddresses.getNextDocument(docEmailAddress);
    } // end while

    } catch(Exception e) {
    e.printStackTrace();
    }
    }
    }

  • Danke für den Hinweis, habe ich soeben nochmals überprüft.


    Bei mir sieht der ClassPath wie folgt aus:


    C:\Programme\Java\jdk1.6.0_06;C:\Programme\Lotus\Notes6;C:\Programme\Lotus\Notes; C:\work\eclipse33\sugarsoap;C:\work\eclipse33\EmailArchiver\bin


    Das Verzeichnis C:\work\eclipse33\EmailArchiver\bin verweist sogar auf das Verzeichnis in dem die Klasse NotesTest.class sich befindet. Habe ich soeben eingetragen.


    In dem Verzeichnis C:\work\eclipse33\sugarsoap befindet sich die Datei Notes.jar


    Außerdem: Das Ziel ist es, später eine Jar-Datei aufzurufen. Da erhalte ich denselben Fehler. Mich interessiert dabei auch, was Eclipse da richtig macht und was beim Aufruf mit Kommandozeilen der Unterschied ist.



    Gruß, Grobber aus Düsseldorf

  • Das beantwortet aber immer noch nicht die Frage wo du den Classpath angepasst hast.


    Wenn du den im Eclipse anpasst hat das keinerlei Auswirkungen auf den Kommandozeilencompiler, weil die unabhängig voneinander sind.


    Die beste Variante ist eh beim Kompilieren mittels javac, den Classpath dort per Kommandozeilenoption mitzugeben

  • Danke,


    ich habe den Classpath mit "Systemsteuerung\System" eingestellt, also nicht mit Eclipse.


    Da ich mit der IDE Eclipse arbeite, kann es nicht sein, daß meine Programmierung nochmals mit javac kompiliere. Es werden noch viel mehr Bibliotheken eingebunden (JDBC, API etc.).


    Ich habe den Rechner auch nochmals neu durchgestartet, aber das Programm findet einfach nicht die gewünschten Klassen zum importieren.


    Gruß, Grobber

  • Hallo,


    Die Einträge in Classpath sind genauso, wie oben beschrieben. Da ist nichts überschrieben worden.


    Danke schon mal für die Hilfe. Ich habe zwar noch keine entgültige Lösung, aber ich weiß schon mal woran es liegt.


    Gruß, Grober

  • Du hast in deinem Kommandozielenaufruf -cp . angegeben.


    Wird die Option -cp angegeben, dann wird das dort angegebene als Classpath verwendet und nicht das was du in der Systemvariablen definiert hast.


    Also hast du es mit deinem Aufruf sehr wohl überschrieben und zwar genau für die Ausführung dieses einen Java Programmes

  • Hallo,


    danke für den Hinweis.


    Ich mußte -cp angeben, weil das das Programm java selbst nicht die eigene aufgerufene Klasse gefunden hat (!!!).


    Ich habe jetzt den Fehler gefunden: Ich habe einfach die aktuellste Java-Version deinstalliert. Ich hatte installiert 1.6.0_10 (Beta). Jetzt läuft 1.6.0_06. Und siehe da, -cp wird nicht mehr benötigt und das Programm läuft wie gewünscht.


    Nochmals vielen Dank für die Hilfe


    Gruß, Grobber