Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: arcon am 21.01.04 - 16:30:13

Titel: ClassNotFoundException // DB2
Beitrag von: arcon am 21.01.04 - 16:30:13
Code
import lotus.domino.*;
import java.sql.*;

public class JavaAgent extends AgentBase {

   public void NotesMain() {

      try {
         Session session = getSession();
         AgentContext agentContext = session.getAgentContext();

         try {
      
                  Class.forName( "COM.ibm.db2.jdbc.net.DB2Driver" );
                }
                catch ( ClassNotFoundException e ) {
               System.out.println( "Fehler: " + e );
                  return;
    }
    Connection conn;
    Statement stmt;
    ResultSet rSet;
    try
    {
         String url = "jdbc:db2://PRODDB2";
         conn = DriverManager.getConnection( url, "", "" );
         stmt = conn.createStatement();
         String sqlQuery = "SELECT Lfr_Name, Adresse FROM Lieferanten";
         rSet = stmt.executeQuery( sqlQuery );
         while ( rSet.next() )
           System.out.println ( rSet.getString(1) + "\t" + rSet.getString(2) );
         stmt.close();
         conn.close();
    }
    catch ( SQLException e )
    {
      System.out.println( "Fehler bei Tabellenabfrage" + e );
      return;
    }
      } catch(Exception e) {
         e.printStackTrace();
      }
   }
}



Wen ich den Agenten ausführe bekomme ich diesen Fehler:
Fehler: java.lang.ClassNotFoundException: COM.ibm.db2.jdbc.net.DB2Driver

Warum findet er den DB2 Class nicht  oder habe ich was vergessen einzubinden ?
Titel: Re:ClassNotFoundException // DB2
Beitrag von: Axel_Janssen am 23.01.04 - 23:25:28
Hi Arcon,

damit die Klassen gefunden werden, musst du den JDBC-Driver von Db2 selbstverständlich der Notes-Java Virtual Maschine bekannt machen.

Dafür gibt es 2 Möglichkeiten:
1. in das Verzeichnis <lotus_programm>\jvm\lib\ext

2. über die Notes.ini:
JavaUserClasses=db2java.zip
(oder so ähnlich. jetzt zu faul zum nachschlagen).

Classloading in JVMs ist ein komplexes Thema. Aber so ungefähr geht das. Selbst wenn die Klasse gefunden wird, funktioniert dein code nur genau 1x. Es gibt da ein Problem, wo sich genau hier NotesSecurity und JavaSecurity ins Gehege kommen. Werd das morgen nochmal bei Rose Kelleher nachschlagen.

Gruß Axel