0

データベースに接続しようとする簡単な例がありますが、作業ディレクトリで mysql*.jar ファイルを解凍した場合にのみ実行できました。

  1. /path/to/mysql.jar.file を $PATH および $CLASSPATH にエクスポートしようとしましたが、うまくいきませんでした。
  2. 次のようなパスを含めようとしましたが、うまくいきませんでした: javac -cp ".:/usr/share/java/" HelloWorld.java

何が問題になる可能性がありますか。jarファイルが見つからないのはなぜですか?

何かご意見は?

4

1 に答える 1

1

JVM を実行するときとコンパイラを実行するときに、クラスパスを設定する必要があります。クラスパスには、JAR を含むフォルダーではなく、JAR 自体を含める必要があります。

あなたのライン

javac -cp ".:/usr/share/java" HelloWorld.java

は、クラスパスをjavacJava コンパイラに渡しているが、JVM には渡していないことを示しています。

次の単純なクラスを使用してみましょう。これは、MySQL に接続してから再び切断するだけです。

import java.sql.*;

public class HelloWorld {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "user", "password");
        System.out.println("Got connection");
        con.close();
    }
}

これを実行すると、次のようになります。

C:\Users\Luke\Java>echo %CLASSPATH%
.;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip;C:\Users\Luke\stuff\ojdbc6.jar

C:\Users\Luke\Java>java HelloWorld
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at HelloWorld.main(HelloWorld.java:5)

この場合、MySQL ドライバー JAR はクラスパスにないため、ドライバー クラスをロードしようとするとエラーが発生します ( com.mysql.jdbc.Driver)。

-cpコマンドライン スイッチ を使用してドライバー JAR をクラスパスに追加すると(現在のディレクトリにこの JAR のコピーがあります)、次のように動作します。

C:\Users\Luke\Java>java -cp .;mysql-connector-java-5.1.18-bin.jar HelloWorld
Got connection

(私は Windows を使用;しているので、パス区切りとして使用します。Unix の方言を使用しているようですので、:代わりに使用する必要があります。)

同様に、JAR をCLASSPATH環境変数に追加すると、これも機能します。

C:\Users\Luke\Java>set CLASSPATH=%CLASSPATH%;mysql-connector-java-5.1.18-bin.jar

C:\Users\Luke\Java>java HelloWorld
Got connection
于 2012-08-12T08:16:19.563 に答える