Hallo
Ich habe ein Problem mit einem Java-Agenten der auf einem Domino 6.5.x läuft.
Hier ein kleiner Teil des Agenten:
import java.lang.*;
import java.text.*;
import java.awt.*;
import java.util.*;
import java.io.*;
import lotus.domino.*;
/**
* @author XXXXX
* @version 1.00.000
* Domino-Agent
* Dieser Agent ist nur zum Test der Java-Umgebung auf dem Server
*/
public class JavaAgent extends AgentBase {
PrintWriter pw ;
public void NotesMain() {
Wenn der Agent anlaüft bekomme ich sofort folgende Meldung in Log:
21.07.2006 08:41:27 JVM: Java Virtual Machine initialized.
21.07.2006 08:41:32 AMgr: Agent ('a_javaAgentTest2006' in 'VISOH\GS\STHOHKAG.NSF') error message: Error loading Agent Class: agents.JavaAgent
21.07.2006 08:41:32 AMgr: Agent ('a_javaAgentTest2006' in 'VISOH\GS\STHOHKAG.NSF') error message: java.lang.ClassNotFoundException: agents.JavaAgent
21.07.2006 08:41:32 AMgr: Agent ('a_javaAgentTest2006' in 'VISOH\GS\STHOHKAG.NSF') error message: at lotus.domino.AgentLoader.loadClass(Unknown Source)
21.07.2006 08:41:32 AMgr: Agent ('a_javaAgentTest2006' in 'VISOH\GS\STHOHKAG.NSF') error message: at java.lang.ClassLoader.loadClass(ClassLoader.java:448)
21.07.2006 08:41:32 AMgr: Agent ('a_javaAgentTest2006' in 'VISOH\GS\STHOHKAG.NSF') error message: at lotus.domino.AgentLoader.runAgent(Unknown Source)
Was muss ich noch in den Agenten importieren, damit er läuft?
Oder liegt es am Server?
Wenn Ihr noch was benötigt sagt Bescheid!
Dirk
Hallo Ralf
Hier ist der komplette Code meines Testagenten:
import java.lang.*;
import java.text.*;
import java.awt.*;
import java.util.*;
import java.io.*;
import lotus.domino.*;
/**
* @author XXXX
* @version 1.00.000
* Domino-Agent
* Dieser Agent ist nur zum Test der Java-Umgebung auf dem Server
*/
public class JavaAgent extends AgentBase {
PrintWriter pw ;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public void NotesMain() {
// Declaration
String strErrorLine = "" ; // String, um Fehler anzuzeigen etc.
pw = getAgentOutput();
pw.println( "Starte Testagent...." );
try { // TRY #1
// Aktuelle Notes-Sitzung
Session session = getSession();
// Agentenumgebung holen
AgentContext agentContext = session.getAgentContext();
// aktuelle Datenbank holen
Database db = agentContext.getCurrentDatabase();
// erforderliche Ansicht initialisieren
View view = db.getView("vMeineView");
// erstes Dokument in der Ansicht holen
Document doc = view.getFirstDocument();
try { // TRY #2
// über alle Dokumente der Ansicht
while ( doc != null ){ // W #1
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
pw.println( "Verarbeite Dokument ;-) ...." );
// nächstes Dokument holen
doc = view.getNextDocument(doc );
} // W #1
//############################################################################################
} catch(Exception e) { // TRY #2
strErrorLine = "Allgemeiner Fehler bei der Verarbeitung der Dokumente!" ;
pw.println( strErrorLine );
e.printStackTrace();
} // TRY #2
} catch(Exception e) { // TRY #1
strErrorLine = "Notwendige Elemente konnten nicht initialisiert werden!" ;
pw.println( strErrorLine );
e.printStackTrace();
} // TRY #1
pw.println( "Beende Testagent" );
}
}
Danke für die Hilfe
Dirk
Was ich nicht ganz verstehe ist das doppelte catch.
public void NotesMain() {
// Declaration
String strErrorLine = "" ; // String, um Fehler anzuzeigen etc.
pw = getAgentOutput();
pw.println( "Starte Testagent...." );
try { // TRY #1
// Aktuelle Notes-Sitzung
Session session = getSession();
// Agentenumgebung holen
AgentContext agentContext = session.getAgentContext();
// aktuelle Datenbank holen
Database db = agentContext.getCurrentDatabase();
// erforderliche Ansicht initialisieren
View view = db.getView("vMeineView");
// erstes Dokument in der Ansicht holen
Document doc = view.getFirstDocument();
// über alle Dokumente der Ansicht
while ( doc != null ){ // W #1
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
pw.println( "Verarbeite Dokument ;-) ...." );
// nächstes Dokument holen
doc = view.getNextDocument(doc );
} // W #1
} catch(Exception e) { // TRY #1
e.printStackTrace();
} // TRY #1
pw.println( "Beende Testagent" );
}
Das ist übersichtlicher. Im StackTrace kann man sowieso nachlesen, wo der Fehler aufgetreten ist.
Funktionaler Code ist ja sowieso nur das, was man leider zwischen den Junit-Tests schreiben muß, weil sonst die Junit-Tests keinen Sinn mehr machen. Deshalb sollte man das möglichst einfach halten.