2012-03-18 9 views
0

Eclipse IDEでこのアプリケーションを実行すると、次のコードが動作する理由を教えてください、コンパイル時に例外が発生し、IDEで実行されているが、IDEにはない適切なドライバがありません

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/stickmanDatabase?user=richard&password=xxxxxxxx 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at stickmanPyramidScheme.server.Database.<init>(Database.java:23) 
    at stickmanPyramidScheme.server.LoginVerification.verifyLogin(LoginVerification.java:10) 
    at stickmanPyramidScheme.server.StickmanServer.parseAndExecute(StickmanServer.java:55) 
    at stickmanPyramidScheme.server.StickmanServer.main(StickmanServer.java:32) 

私の理解では、問題は、私は、ファイル「のmysql-コネクタを必要とするということであるということである: 私はちょうど

public class Database { 
    Connection conn = null; 
    Statement stmt = null; 
    ResultSet rs = null; 

    public Database() throws SQLException { 
    String host = "localhost:3306"; 
    String schema = "stickmanDatabase"; 
    String user = "richard"; 
    String password = "xxxxxxxx"; 
    String url = "jdbc:mysql://" + host + "/" + schema + "?user=" + user + "&password=" + password; 

    try { 
     conn = DriverManager.getConnection(url); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
     throw e; 
    } 
} 
} 

ここで私が取得していますスタックトレースです....それを得ることはありません私は、ビルド・パス、中-java-5.1.18-bin.jarを。そして、私はそれを削除した場合のEclipse内で実行するときのコードは、もはや機能します。

任意の助けいただければ幸いです。ありがとうございました。

...

Per Andrewのリクエスト...私はUbuntu LinuxサーバーでEclipseを使用しています。 "mysql-connector-java-5.1.18-bin.jar"には "Driver.class"を含む "com.mysql.jdbc"が含まれています jarが(アプリケーションディレクトリ)/ WEB- INF/libディレクトリ。それでも同じエラーが発生します。

+0

としてもエラー出力に書式設定コードを使用してください。書式設定を使用して(あなたの質問を編集した)どれくらい明確であるかに注意してください。 –

+0

以下の推奨事項に従うと、Class.forName( "com.mysql.jdbc.Driver")を追加し、 "mysql-connector-java-xxxx-bin.jar"ファイルをWEB-INFに移動しました/ libディレクトリ(アプリケーションと同じディレクトリにあります)に追加し、-classpathに "mysql-connector-java-xxxx-bin.jar"を追加しました。これらのどれもうまくいっていないし、私が思い付く組み合わせもありません。なぜこれがうまくいかないのか私は非常に混乱しています。 –

+0

'-bin.jar'には通常、ネイティブ(例えば' .dll'や '.so'ファイル)が含まれています。 AFAIUユーザーJarsには、クラス専用のJar、特に 'com.mysql.jdbc.Driver'も含まれている必要があります。 Jarsの内容を調べるためのIDEがあるのですか、またはSDKツールを使用してコンテンツをリストする方法を知っていますか?もしそうなら、そのクラスを含むJArを見つけて、それを 'WEB-INF/lib'に追加します。また、a)このタイプの情報を編集する方が良いことに注意してください。あなたのコメントを次のように通知するだけです。* "以下の推奨事項に従って.." * –

答えて

0

私は問題を見つけました... Eclipseがすべてのファイルをまとめて処理するという印象を受けましたが、マニフェストにクラスパスを追加する必要がありました。それをマニフェストに入れましたが、-classpathオプションを追加したりPATHに追加したりしませんでした。

同様の問題がある人は、これをMANIFESTに追加する必要があることに注意してください。Eclipseが作成瓶でMF:

Class-Path: /path/file.jar 

を空白行では、ファイルの末尾には

1

IDEにドライバjarファイルが必要なだけでなく、サーバーにもインストールする必要があります。これはどんな種類のサーバーなのかは言わないが、サーバープロセスのクラスパス上にある必要がある。すなわち、ウェブアプリケーションのWEB-INF/libディレクトリにあるか、サーバーのJVMの引数である-classpathに表示されます。

1

eclipseでファイルを実行すると、jdbcドライバがプロジェクトのクラスパスにあります。サーバーにデプロイするときには、サーバーにもそれを組み込む必要があります。戦争/瓶/耳のlibまたはいくつかのサーバーlibのいずれか。

1

コールClass.forName( "com.mysql.jdbc.Driver"); DriverManager.getConnection(url);より前の

DriverManagerはMySqlドライバを認識しないため、 Class.forName("com.mysql.jdbc.Driver")はMySqlドライバ実装自体をDriverManagerに登録します。ところで

:あなたの質問のタイトルに「をコンパイルしたとき」の代わりに「を実行するとき」それはです。

+0

私はこれを試していましたが、Class.forName( "com.mysql.jdbc.Driver")。newInstance()...も問題を解決しませんでした。 –

+0

これも同様に、私は不明なソースエラー "java.net.URLClassLoader $ 1.run(Unknown Source)"を取得します。 –

1

バディ、あなたが同様のojdbc14.jarを追加する必要があり、その簡単、単に "LIB WEB-INF /" のフォルダに "のmysql-コネクタ-javaの-XXXX-bin.jarを" を追加

+0

ファイルがありますが、ディレクトリはありません。このファイルはビルドパスにあり、私はJavaとEclipseで十分に初心者で、Jarファイルに情報を含めると思っていました。 –

0

アプリケーションのWEB-INF/libフォルダにあるmysql connector jar

ご質問がありましたらお知らせください。

関連する問題