[前][次][番号順一覧][スレッド一覧]

mysql:11974

From: Tetsuro IKEDA <Tetsuro IKEDA <tetsuro@xxxxxxxxxx>>
Date: Tue, 16 Aug 2005 00:46:33 -0700
Subject: [mysql 11974] Re: JAVA で Mysql にコネクトできません。

池田です。

あまり時間がないということなので・・・

・WEB-INF/lib に mysql-connector-java-3.1.10-bin.jar をコピペする。
・それ以外のことはしない(もちろんクラスパスへ通すことも不要)

というのが必要十分条件です。
(WEB-INF/libに置いたjarファイルに対してはアプリケーションサーバによって
ロードされますのでクラスパス不要)

当方の環境で mysql-connector-java-3.1.10-bin.jar を使って、
下記のテストコードを走らせると、エラー無しに終了します。

> java.lang.NoClassDefFoundError: org/aspectj/lang/Signature

このエラーが出るのは、mysql-connector-java-3.1.10-bin-g.jar に対して
クラスパスがどこからか通っているからだ、とConnector/Jの開発者である
Mark Matthews氏も言っています。

以下の点を再度確認してみてください。

・間違ってmysql-connector-java-3.1.10-bin-g.jarにクラスパスが通っていな
いかどうか
・mysql-connector-java-3.1.10-bin-g.jarをリネームしてmysql-connector-
java-3.1.10-bin.jarにしていたりはしないか
・mysql-connector-java-3.1.10-bin.jarは本当にmysql-connector-java-3.1.10
-bin.jarなのか

(jar -tf mysql-connector-java-3.1.10-bin.jar を実行した際に
com/mysql/jdbc/trace/Tracer.classが含まれているか否か。)

leader_cat wrote:
> 度々すいません。お世話になります。m(__)m
> 
> ご指摘の"mysql-connector-java-3.1.10-bin.jar"は他で既にダウンロード済で
> WEB-INF/libにコピペ済でしたが…
> 
> (スレ・トップより)
> 
>>[Tomcat 5.5]
>>  |
>>  + [webapps]
>>    |
>>    + [servlets_test]
>>      |
>>      + [mysql_test]
>>      |
>>      + [WEB-INF] - web.xml
>>        |
>>        + [classes] - mysql_access.java
>>        |               |
>>        |              + mysql_access.class
>>        |
>>        + [lib] - aspectjrt.jar
>>        |        |
>>        |       + mysql-connector-java-3.1.10-bin.jar(自分でここにコピー
> 
> した) ←※ココ
> 
>>        |
>>        + mysql_test_index.html(これから"mysql_access"にリンク)
> 
> 
> それとダウンロードし、解凍して出来た"mysql-connector-java-3.1.10-bin.jar"
> は、
> 以下のようなフォルダに入れてあります。
> 
> "C:\mysql\mysql-connector-java-3.1.10"
> 
> 解凍したままの為、"mysql-connector-java-3.1.10-bin.jar"も
> "mysql-connector-java-3.1.10-bin-g.jar"もあります。
> 
> "C:\mysql\mysql-connector-java-3.1.10\src\org\gjt\mm\mysql"
> には、"Driver.java"のみ存在します。
> 
> サーブレット上の、"Class.forName("org.gjt.mm.mysql.Driver");"って
> 上記"Driver.java"を見に行ってるのではないんでしょうか?
> 
> ちなみに上記は、以下のサイトを参考にしてました。
> "JavaでHello World JDBC(MySQL)編"
> (http://www.hellohiro.com/jdbcmysql.htm)
> 
> 
> 
> それと、ご指摘を受けてクラスパスは以下のように変えています。("C:\"で折り返
> して書いています)
> 
> .;%JAVA_HOME%\lib\tools.jar;
> C:\Program Files\Apache Software Foundation\Tomcat
> 5.5\common\lib\servlet-api.jar;
> C:\Program Files\Apache Software Foundation\Tomcat
> 5.5\webapps\servlets_test\atmarkit\WEB-INF\classes;
> C:\Program Files\Apache Software Foundation\Tomcat
> 5.5\webapps\servlets_test\mysql_test\WEB-INF\classes;
> C:\mysql\mysql-connector-java-3.1.10\mysql-connector-java-3.1.10-bin.jar;
> C:\Program Files\Apache Software Foundation\Tomcat
> 5.5\webapps\servlets_test\mysql_test\WEB-INF\lib
> 
> クラスパスからご指摘のあった、
> C:\mysql\mysql-connector-java-3.1.10\src;
> C:\Program Files\Java\aspectj1.5\lib\aspectjrt.jar
> は削除しました。
> 
> C:\Program Files\Apache Software Foundation\Tomcat
> 5.5\webapps\servlets_test\mysql_test\WEB-INF\lib
> は、サーブレットの"mysql-connector-java-3.1.10-bin.jar"をコピペした
> "WEB-INF/lib"にパスを通すのに
> 必要だと思い追加しましたが…
> 
> 
> 
> ご指摘のサンプルサイトを見て、データベースコネクトのサンプルを見つけ
> 以下のjavaファイルを作り、"C:\Connecting to MySQL"というフォルダを作ってそこ
> へ入れました。
> (まあサンプルのまんまなんですが…)
> 
> 【LoadDriver.java】
> import java.sql.Connection;
> import java.sql.DriverManager;
> import java.sql.SQLException;
> 
> // Notice, do not import com.mysql.jdbc.*
> // or you will have problems!
> 
> public class LoadDriver {
>     public static void main(String[] args) {
>         try {
>             // The newInstance() call is a work around for some
>             // broken Java implementations
> 
>             Class.forName("com.mysql.jdbc.Driver").newInstance();
>         } catch (Exception ex) {
>             // handle the error
>         }
>     }
> }
> 
> コンパイル(C:\Connecting to MySQL>javac LoadDriver.java)は通りました。
> 
> 実行してみる("C:\Connecting to MySQL>java LoadDriver")と以下のようにサーブ
> レットの時と同様のエラーでした。
> 
> C:\Connecting to MySQL>java LoadDriver
> Exception in thread "main" java.lang.NoClassDefFoundError:
> org/aspectj/lang/Signature
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Unknown Source)
>         at LoadDriver.main(LoadDriver.java:15)
> 
> ここで"Class.forName("com.mysql.jdbc.Driver").newInstance();"の
> "com.mysql.jdbc.Driver"が
> 違うのでは?と思い、サーブレットと同様に、
> "Class.forName("org.gjt.mm.mysql.Driver").newInstance();"に
> してやってみましたが同じエラーでした。
> 
> もちろん、クラスパスを書き換える度に、サービスの"Apache Tomcat"と"Apache"は
> 再起動("停止"して"開始")しています。
> 
> 
> 
> 何か根本的なミスをしてるのでしょうか?
> 
> あまり時間的余裕がありません。m(__)m
> 最終的にはwebアプリとしてJSPやサーブレットからMySqlにアクセスし、
> データベースに新規登録・更新・削除等を行わなければいけません。
> 
> それもデータベースにコネクトが出来なければ話にならないので…
> 
> 以上、よろしくお願いします。
> 
> 
> __________________________________
> Save the earth
> http://pr.mail.yahoo.co.jp/ondanka/
> 
> 


[前][次][番号順一覧][スレッド一覧]

     11944 2005-08-12 18:33 [leader cat <leader_c] JAVA で Mysql にコネクトできません。    
     11946 2005-08-13 02:50 ┣[Tetsuro IKEDA <tetsu]                                       
     11969 2005-08-16 10:11 ┃┗["leader_cat" <leader]                                     
     11971 2005-08-16 13:22 ┃ ┗[Tetsuro IKEDA <tetsu]                                   
     11972 2005-08-16 16:06 ┃  ┗["leader_cat" <leader]                                 
->   11974 2005-08-16 16:46 ┃   ┗[Tetsuro IKEDA <tetsu]                               
     11977 2005-08-16 17:40 ┃    ┗["leader_cat" <leader]                             
     11973 2005-08-16 16:32 ┗[KIshii <kn-ishi@xxxx]                                       
     11975 2005-08-16 16:49  ┣[Tetsuro IKEDA <tetsu]                                     
     11978 2005-08-16 17:47  ┃┗["leader_cat" <leader]                                   
     11979 2005-08-16 23:11  ┃ ┗[Tetsuro IKEDA <tetsu]                                 
     11981 2005-08-17 09:14  ┃  ┗["leader_cat" <leader]                               
     11976 2005-08-16 17:39  ┗["leader_cat" <leader]