- PR -

EclipseでDB接続について

1
投稿者投稿内容
ぎん
会議室デビュー日: 2006/11/14
投稿数: 2
お住まい・勤務地: 宮城県
投稿日時: 2006-11-14 10:19
EclipseもJavaも初心者のギンです。

私の環境は
Windows xp pro
IE6
Eclipse 3.02
Tomcat 5.5
jdk1.5.0_03
使用DBは『基礎からのサーブレット』についてきたHSQLDBです。

はじめに、DBに接続するクラスを作りました。
そのクラスを使ってDBに接続して、テーブルから持ってきた適当な値をログに出力することは出来ました。
次に私がやろうとしていたことは、サーブレットから接続して値を取得して、画面へ表示するということでした。
それをやる際、DB接続する部分でExceptionが走り、落ちてしまいます。

java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1332)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at gin.DBManager.getConnection(DBManager.java:13)
at gin.selectServlet.doGet(selectServlet.java:29)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)

↑がその時出力されたExceptionです。

私の打ったコードがだめなのかと思ったので、『基礎からのサーブレット』に載っていたソースを丸々打って試してみました。

----------------------------------
package gin;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class selectServlet extends HttpServlet{

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{

response.setContentType("text/plan;charset; charset=Shift-JIS");
PrintWriter out = response.getWriter();

String sql = "select * from account";

Connection con = null;
Statement smt = null;

try{
con = DBManager.getConnection();
smt = con.createStatement();
ResultSet rs = smt.executeQuery(sql);


while(rs.next()){
out.println(
"ID="+rs.getInt("ID")
+",name=" + rs.getString("name")
+",pass=" + rs.getString("pass")
);
}
} catch(SQLException e){
throw new ServletException(e);
} finally{
if(smt != null){
try{smt.close();}catch(SQLException ignore){}
}
if(con != null){
try{con.close();}catch(SQLException ignore){}
}
}
}
}

------------------------
これだとエラーが出ていたので
catch (Exception e) {e.printStackTrace();}

Eclipseで自動作成されたcatchを追加して実行してみました。
それでも、同じExceptionが走ります。

長くなってしまいましたが、何が原因なのか私にはわからないので、教えていただけると幸いです。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-11-14 10:30
引用:

ぎんさんの書き込み (2006-11-14 10:19) より:
java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1332)



JDBCのクラスが見つからないという例外です。
HSQLDBのjarファイルをWEB-INF/libに置いてあれば通常は大丈夫なはず。
ぎん
会議室デビュー日: 2006/11/14
投稿数: 2
お住まい・勤務地: 宮城県
投稿日時: 2006-11-14 10:42
nagiseさん、本当にありがとうございます。
無事、接続できました。
1

スキルアップ/キャリアアップ(JOB@IT)