Keine Connection mit DB - ganz einfache Testanwendung

WoodyTD

Mitglied
Hallo liebes Forum,

ich habe vor kurzem mit Java EE angefangen. Bin aber gerade am Verzweifeln, weil ich an etwas ganz simplen scheitere. Ich möchte gerne eine Verbindung zu einer Datenbank erstellen (lokal). Dafür nutze ich den MySQL - Community Server. Zur Administration nutze ich die MySQL - Workbench. Meine Anwendung läuft auf dem Tomcat 7 und mein BS ist Mac OS X 10.9.1 . Die Funktion "Testverbindung" der Workbench verläuft problemlos und "test" habe ich auch angelegt. Der SQL- Server läuft auch.

Mein Java- Code sieht so aus:
Java:
<%@page import="java.sql.*"%>
<%!public static Connection connection() {
	try{
	Class.forName("com.mysql.jdbc.Driver").newInstance();
	return DriverManager.getConnection("jdbc:mysql://localhost/test","root","root");}
	catch(Exception e){
		return null;
	}
	}

	public static boolean close(Connection c) {
		try{
			c.close();
			return true;
		}
		catch(Exception e){
			throw new Error(e);
			return false;
		}
	}%>

<%@ page language="java" contentType="text/html; charset=UTF8"
	pageEncoding="UTF8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8" />
<title>Hello World</title>
</head>
<body>

	<%
		out.println("Hallo");
		Connection c = connection();
		out.println(c);
		close(c);
	%>
</body>
</html>

Wenn ich nun aber die Seite über den Browser aufrufe kommen, bedingt durch Error, die folgenden Fehlermeldung, mit denen ich nichts anfangen kann:
Code:
HTTP Status 500 - Unable to compile class for JSP:

type Exception report

message Unable to compile class for JSP:

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: 

An error occurred at line: 18 in the jsp file: /index.jsp
Unreachable code
15: 		}
16: 		catch(Exception e){
17: 			throw new Error(e);
18: 			return false;
19: 		}
20: 	}%>
21: 


Stacktrace:
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.47 logs.

Apache Tomcat/7.0.47

Lasse ich "new Error(e)" weg, kommt, wie zu erwarten ist, "Hallo null"
Ich hoffe ihr könnt mir helfen.

Viele Grüße
WoodyTD
 

turtle

Top Contributor
throw new Error(e);
return false;
Sieht aber auch merkwürdig aus, oder?

Zunächst sagt die Signatur connection aus, das da keine Exception kommt, dann sieht man aber ein throw() und DANACH kommt noch ein return. Diese letzte Anweisung gibt bei mir folgende Fehlermeldung
Code:
Unreachable code
.

Das würde ich korrigieren und gebe zu Protokoll, das JSP eine Erfindung des Teufels sind:eek:
ZUmindest würde ich einbauen, damit du erkennst was das Problem beim Aufbau der Verbindung ist.
Java:
catch (Exception e) {
	e.printStackTrace();
}

Möchte man das trotzdem einsetzen, kann man JSP kompilieren lassen und weiß vorher, das zumindest die Syntax richtig ist. Ist recht ordentlich hier beschrieben.
 
Zuletzt bearbeitet:

WoodyTD

Mitglied
Erst wusste ich nicht so recht was du mir mit "sieht wirklich merkwürdig aus" sagen wolltest aber nachdem ich den Code aus der .jsp rausgenommen haben und in eine .java gesteckt habe, ist mir auch aufgefallen, dass nicht beides geht.
--> Also return raus.
Jetzt bekomme ich eine umfangreichere Fehlermeldung, die wohl etwas aussage kräftiger ist, für euch, hoffe ich. Ich stehe nämlich immer noch "wie ein Ox vorm Tor" -.-
Ich vermute mein Fehler liegt bei diesem Codeabschnitt:
[JAVA=8]Class.forName("com.mysql.jdbc.Driver").newInstance();[/code]
In dem Tutorial, nach dem ich das gemacht habe, kann der das nämlich via Autovervollständigung finden, ich nicht. Muss da noch irgendwas importiert etc. werden?

Aktuelle Fehlermeldung:
Code:
HTTP Status 500 - javax.servlet.ServletException: java.lang.Error: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

type Exception report

message javax.servlet.ServletException: java.lang.Error: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.Error: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause

javax.servlet.ServletException: java.lang.Error: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:92)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause

java.lang.Error: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	jsp.MySQl.connection(MySQl.java:13)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:80)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
	java.lang.Class.forName0(Native Method)
	java.lang.Class.forName(Class.java:190)
	jsp.MySQl.connection(MySQl.java:9)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:80)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.47 logs.

Apache Tomcat/7.0.47

Danke für eure Hilfe
 

turtle

Top Contributor
Wie mein Freund ARadauer richtig anmerkte, musst du den JDBC-Treiber bekannt machen.

Die Fehlermeldung ist eindeutig
Code:
java.lang.ClassNotFoundException

Im Classpath einer Webanwendung ist das WEB-INF/classes Verzeichnis und auch das Verzeichnis WEB-INF/lib.

Im Letzteren können JARs hinterlegt werden, die die Webanwendung benötigt. Hier gehört also dein JDBC-Treiber rein.
 

WoodyTD

Mitglied
Endlich... :)

Vielen Dank euch beiden. Da wäre ich nie drauf gekommen.
Jetzt geht es endlich.

Wünsche euch frohe Weihnachten und einen guten Rutsch.

VG
WoodyTD
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
feinperligekohlensaeure JSF Keine Tabelle / Buttons werden unter Windows angezeigt + Apple schon Allgemeines EE 9
C JSF selectOneMenu keine Auswahl Allgemeines EE 8
D Fehlermeldungen.und keine Ahnung was zu tun ist Allgemeines EE 3
G eigene Taglib, Attribut kann auf einaml keine Expressions Allgemeines EE 2
O überprüfen auf KEINE get-paramter Allgemeines EE 4
E JSF, Hibernate & MySQL: Keine Datenbankaktualisierung Allgemeines EE 5
P keine verbindung vom struts framework zu mysql Allgemeines EE 2
C Message Driven Bean soll keine Nachrichten empfangen Allgemeines EE 4
P JavaMail SMTP Connection Allgemeines EE 2
A Listener oder Signal, dass Connection in übergebenen Handler fertig (MessageHandler) Allgemeines EE 1
H java selenium test connection refused Allgemeines EE 6
Java.getSkill() verbindung / connection in session speichern Allgemeines EE 4
G DB Connection Timout Allgemeines EE 5
J Tomcat: "Unable to get connection, DataSource invalid&q Allgemeines EE 8
B Connection Poll ohne TomCat Allgemeines EE 5
F MySQL Connection Pool nach Apache Example Allgemeines EE 1
S JDBC Mysql Connection Problem - datasource null Allgemeines EE 3
G DB Connection mit Java Beans Allgemeines EE 6
P J2EE Struts - Database connection failed - Hilfe?:( Allgemeines EE 6
H JNDI Name für die Queue - Connection Factory in JBoss ändern Allgemeines EE 3
B DB Connection schliessen Allgemeines EE 8
K JAVA BEAN DB Connection Prob Allgemeines EE 5
B Struts - Connection Pool - MySQL - JDeveloper Allgemeines EE 2
J Axis, XFire, XINS oder was ganz anderes? Was benutzen? Allgemeines EE 7
R Hibernate: many-to-many funktioniert noch nicht ganz Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben