- PR -

サーブレットでSQL

1
投稿者投稿内容
omopurike
常連さん
会議室デビュー日: 2008/04/03
投稿数: 38
投稿日時: 2008-09-26 01:13
javaでSQL(employeesテーブル)の社員IDのデータ取得し、新しい社員IDを作るというプログラムを作りました。

employeesテーブル

ID | name
1001 | 浅葱
1002 |  岩崎
1003 |   牛飼
1004 |   江本
    |
    |
    |

その際javaでは新しいデータを(ID:1005 name:...)入れることができたのですがこれをサーブレットにしたときにエラーが起こり保存されませんでした。

つくったサーブレットは名前を入れたら次のIDのところ(今回でいうID:1005)をつくり名前とともに保存するというものです。



エラー内容

java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1338)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1187)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at Id.doPost(Id.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
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:868)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
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)



at Id.doPost(Id.java:33)は

Class.forName("org.gjt.mm.mysql.Driver");

です。

Class.forName("org.gjt.mm.mysql.Driver");
に対してのエラーなのでCLASSPATHがおかしいのではと考えたのですが、Webをみてもできませんでした。。。



koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2008-09-26 08:44
「Tomcat サーブレットJDBC クラスパス」あたりで検索すると見つかります。
その中では、こちらのページが詳しいです。

http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/class-loader-howto.html

簡単に言えば、
「WEB-INF/libにMySQLのJDBCドライバのjarを置きなさい」
ということです。
通常Tomcatでは、CLASSPATHは無視されます。

これを書き写した記事が某所にありますが、そちらは見なくてもいいでしょう
omopurike
常連さん
会議室デビュー日: 2008/04/03
投稿数: 38
投稿日時: 2008-09-26 09:14
回答ありがとうございます。ちゃんとできました。

とても単純なことだったのですね....でもとても大事なことだと思いますので忘れないように頭にしっかり書き込んでおきます。


お騒がせいたしました。
1

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