Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
ClassNotFoundException // DB2
(1/1)
arcon:
--- 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();
}
}
}
--- Ende Code ---
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 ?
Axel_Janssen:
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
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln