Dear Sirs:
I was trying to run Sample Code 7 an 8 from JDBC Database Access with
Java from Graham Hamilton, against a Postgres 7.3 database "Test" and I
have the following error message:
java.lang.NoClassDefFoundError: org/postgresql/Diriver
The ful code Iwas using is
/*
* Copyright 2003 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
* Use of this software is authorized pursuant to the terms of the
license found at
* http://developer.java.sun.com/berkeley_license.html.
*/
/**
* This is a demonstration JDBC applet.
* It displays some simple standard output from the Coffee database.
*/
import java.applet.Applet;
import java.awt.Graphics;
import java.util.Vector;
import java.sql.*;
public class OutputApplet extends Applet implements Runnable {
private Thread worker;
private Vector queryResults;
private String message = "Initializing";
public synchronized void start() {
// Every time "start" is called we create a worker thread to
// re-evaluate the database query.
if (worker == null) {
message = "Connecting to database";
worker = new Thread(this);
worker.start();
}
}
/**
* The "run" method is called from the worker thread. Notice that
* because this method is doing potentially slow databases accesses
* we avoid making it a synchronized method.
*/
public void run() {
String url = "jdbc:postgresql:test";
String query = "select * from uno";
try {
Class.forName("org.postgresql.Driver");
} catch(Exception ex) {
setError("Can't find Database driver class: " + ex);
return;
}
try {
Vector results = new Vector();
Connection con = DriverManager.getConnection(url,
"postgres", "");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String s = rs.getString("a");
int f = rs.getInt("b");
String text = s + " " + f;
results.addElement(text);
}
stmt.close();
con.close();
setResults(results);
} catch(SQLException ex) {
setError("SQLException: " + ex);
}
}
/**
* The "paint" method is called by AWT when it wants us to
* display our current state on the screen.
*/
public synchronized void paint(Graphics g) {
// If there are no results available, display the current message.
if (queryResults == null) {
g.drawString(message, 5, 50);
return;
}
// Display the results.
g.drawString("Prices of coffee per pound: ", 5, 10);
int y = 30;
java.util.Enumeration enum = queryResults.elements();
while (enum.hasMoreElements()) {
String text = (String)enum.nextElement();
g.drawString(text, 5, y);
y = y + 15;
}
}
/**
* This private method is used to record an error message for
* later display.
*/
private synchronized void setError(String mess) {
queryResults = null;
message = mess;
worker = null;
// And ask AWT to repaint this applet.
repaint();
}
/**
* This private method is used to record the results of a query, for
* later display.
*/
private synchronized void setResults(Vector results) {
queryResults = results;
worker = null;
// And ask AWT to repaint this applet.
repaint();
}
}
and the html file
/*
* Copyright 2003 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
* Use of this software is authorized pursuant to the terms of the
license found at
* http://developer.java.sun.com/berkeley_license.html.
*/
<HTML>
<HEAD>
<TITLE> Query Output </TITLE>
</HEAD>
<BODY>
Output from query
select NAME, PRICE from COFFEES
<APPLET CODE="OutputApplet.class" WIDTH=250 HEIGHT=200>
</APPLET>
</BODY>
</HTML>
After compiling with javac I ran
appletviewer OutputApplet.html
and had the above message.
Can You help me to solve the problem?
Thanks.
Francisco.