NoClassDefFoundError i runtime, selv den er i classparth??
Jeg er lige startet på noget jsp/servlet osv. og er løbet ind i et problem.Jeg bruger Tomcat som webserver og mysql som db.
Jeg har "stjålet" og tilpasset et eksempel fra disky (http://www.eksperten.dk/spm/136550) om hvordan jeg laver en databaseconnection og jeg har fået den til at fungere når jeg laver en main-driver og eksekvere lidt sql mod databasen.
Nu vil jeg så forsøge at bruge denne database connection i en servlet der ser således ud:
***************************************************
package dbcon;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import database.*; //egen pakke: connection til mysql
import javax.servlet.ServletException;
public class DatabaseServlet extends HttpServlet
{
private Database conn;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
conn = new Database();
conn.open();
conn.close();
response.setContentType("text/html");
//response.setContentType("text/plain");
PrintWriter out = response.getWriter();
// ResultSet result = conn.doQuery("SELECT * FROM test");
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Database Connection</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Test af DB connection</h1>");
out.println("en connection er åben... hvordan skal den bruges?<br>");
/*
try
{
//flytter igennem resultsættet
while(result.next())
{
String temp = result.getString(1);
out.println(temp+"<br>");
}
}
catch (SQLException e)
{
System.err.print("SQLException: ");
System.err.println(e.getMessage());
}
*/
// conn.close();
out.println("Connection er lukket igen...");
out.println("</body>");
out.println("</html>");
}
};
***********************************************
Selve servletten compilere fint men når den skal afvikles får jeg fejlen:
javax.servlet.ServletException: Invoker service() exception
..osv...
root cause
java.lang.NoClassDefFoundError: database/Database
at dbcon.DatabaseServlet.doGet(DatabaseServlet.java:21)
...osv...
Det tyder på at den ikke kan finde min klasse Database, men den er altså i min classpath (hvorfor den godt kan compile).
Spørgsmålet er så:
men mangler jeg at gøre noget så tomcat kan finde Database.class?
(det skal sige at hvis jeg udkommentere alt hvor Database klassen indgår, kører servletten fint)