# Problem bei JSP mit DB-Abfrage



## ingo preuss (24. Mai 2005)

Hallo,
   ich habe vor mit einer jsp-Datei eine Datenbankabfrage via JDBC zu machen. Die Datei sieht so aus:

```
<%@page import="java.sql.*"%>
    <%@page import="java.sql.Connection" %>
    <%@page import="java.sql.Statement" %>
    <%@page import="java.sql.Statement" %>
   
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
   <html>
   <head>
   ...
   
   
   <%	
    	try {
    	
    		Class.forName("com.sybase.jdbc3.jdbc.Sybdriver");	 
    		
    	
 		Connection con = DriverManager.getConnection("jdbc:sybase:Tds:192.168.39.38:12000","user","pwd");
    		Statement stmt = con.createStatement();
    	    
 		ResultSet rs = stmt.executeQuery("select * from Gaestebuch order by Datum desc");		
    		
    		while(rs.next()) { 
    %>
   			<tr>
   				<td>
 					<font face="Verdana">
 		 		 <%=rs.getString("Datum")%>	 			
 		 		 <%=rs.getString("Nachname")%>
 		 		 <%=rs.getString("Email")%>
 		 		 <%=rs.getString("Nachricht")%>
 					</font>
   				</td>
   			</tr>
   <%
    		}	
    		
    		rs.close();
    		con.close();
    	} 
    	catch( Exception e) {
 		 		throw new Error("Verbindung ist nicht zustande gegommen: "+e.getMessage());
    	}
    %>
   </table>
   </body>
   </html>
```
 
 Das Tomcat-Projekt liegt in ROOT, der Tomcat laeuft, doch die Daten koennen aus der DB nicht abgerufen werden. Falls ihr die Fehlermeldung braucht mailt mir bitte.

   Gruß,
   Ingo


----------



## hul (24. Mai 2005)

ReHallo,

 Und? Wie lautet die Fehlermeldung?
 Sieht nach einem Problem beim Deployen der Anwendung aus. Hat Tomcat Zugriff auf alle erforderlichen Klassen? Insbesondere auf den JDBC-Treiber? Sind der Klassenname für den Treiber und die Parameter bei getConnection() korrekt angegeben? Wird die Seite überhaupt gefunden?

 mfg

 HUL


----------



## ingo preuss (27. Mai 2005)

Hallo,
    hier die Fehlermeldung:

```
HTTP Status 500 - 
   
     type Exception report
   
    message 
   
    description The server encountered an internal error () that prevented it from fulfilling this request.
   
    exception 
   
    org.apache.jasper.JasperException: Unable to compile class for JSP
   	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:97)
   	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:346)
   	org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:414)
   	org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
   	org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
   	org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
   	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
   	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
   	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
   	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
   	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause 
   
    Unable to find a javac compiler;
   com.sun.tools.javac.Main is not on the classpath.
   Perhaps JAVA_HOME does not point to the JDK
  	org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:106)
   	org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:935)
   	org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:764)
   	org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:382)
   	org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
   	org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
   	org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
   	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
   	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
   	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
   	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
   	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
   
     Apache Tomcat/5.0.28
```
 
  Was ich nicht begreife ist das Theater mit der javac. Der Pfad dorthin ist jedenfalls angegeben. Kann das evtl. damit in Zusammenhang stehn, das ich im Root-Verzeichnis einen separaten Ordner angegeben habe in dem das komplette TomCat-Projekt liegt?
  Der aktuelle Pfad zur Datei guestbook.jsp:

```
C:\Programme\Apache Software Foundation\Tomcat 5.0\webapps\ROOT\JspGuestbook
```


----------



## hul (27. Mai 2005)

Hallo,

 ich würde die Fehlermeldung zunächst mal wörtlich nehmen. Da wird der Java-Compiler nicht gefunden. Startest Du Tomcat von der Kommandozeile aus (startup.bat im Tomcat bin-Verzeichnis)? Wird der javac denn gefunden, wenn Du in einer Commandshell z. B. "javac -help" eingibst? Und was erhälst Du bei Engabe des Befehls "echo %JAVA_HOME%"? Hast Du evtl. Änderungen in den Startup-Scripts vorgenommen (startup.bat und/oder catalina.bat)?
 Welche Tomcat-Version benutzt Du?
 Das sind bisher leider auch nur Fragen, aber ich vermute, da kommt der Fehler irgendwo her.


----------



## Thomas Darimont (27. Mai 2005)

Hallo!

Hier mal eine Beispielkonfiguration:
Java Installiert in: 
C:\Programme\Java\jdk1.5.0_03

Umgebungsvariablen definieren:
JAVA_HOME -> C:\Programme\Java\jdk1.5.0_03
PATH -> .... %JAVA_HOME%\bin;.....

und schon sollte es wieder klappen ;-)

Gruß Tom


----------



## ingo preuss (3. Juni 2005)

*Ein Fehler geht der naechste kommt*

Hallo,
 der Tomcat tut endliche seinen Dienst ;o) Bin auch schon ganz gut mit den Fehlermeldungen klar gekommen. Jetzt krieg ich aber eine "
 java.lang.ClassNotFoundException: com.sybase.jdbc3.jdbc.SybDriver", obwohl das externe jar ueber den JavaBuildPath eingebunden habe. Eclipse macht auch keine Anstalten, dass etwas fehlt. Die Fehlermeldung sieht wie folgt aus:

```
exception 
  
   javax.servlet.ServletException: com.sybase.jdbc3.jdbc.SybDriver
  	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
  	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
  	org.apache.jsp.guestbook_jsp._jspService(guestbook_jsp.java:181)
  	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
  	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
  	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
  	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
  	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
  	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
   root cause 
  
   java.lang.ClassNotFoundException: com.sybase.jdbc3.jdbc.SybDriver
  	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1340)
  	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
  	org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:148)
  	org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:69)
  	java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
  	java.lang.Class.forName0(Native Method)
  	java.lang.Class.forName(Class.java:141)
  	org.apache.jsp.guestbook_jsp._jspService(guestbook_jsp.java:137)
  	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
  	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
  	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
  	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
  	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
  	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
```
 
   Gruß, Ingo


----------

