Autor Thema: ClassNotFoundException // DB2  (Gelesen 2191 mal)

Offline arcon

  • Frischling
  • *
  • Beiträge: 47
  • Geschlecht: Männlich
  • Notes4Ever
ClassNotFoundException // DB2
« 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 ?
« Letzte Änderung: 21.01.04 - 16:31:00 von arcon »

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:ClassNotFoundException // DB2
« Antwort #1 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
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz