3

Java プログラム用の JDBC postgreSQL ドライバーをロードしようとしています。私はこれがインターネット全体にあることを知っています。私は多くの解決策を試しましたが、どれもうまくいきませんでした。

問題は、次のエラーが発生することです。

Exception in thread "main" java.lang.NoClassDefFoundError:    
classes/com/freire/test/JDBCExample/class
Caused by: java.lang.ClassNotFoundException: classes.com.freire.test.JDBCExample.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

そして、私のコードは次のようになります。

package com.freire.test;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

public class JDBCExample 
{
    public static void main(String[] argv) 
    {
        System.out.println("JDBC Connection Testing");
        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("PostgreSQL JDBC Driver not included!");
        }
    }
}

そして、私のプロジェクトの構造は次のようになります。

myProject
 src
   com
     freire
       test
         JDBCExample.java
 classes
   com
     freire
       test
         JDBCExample.class
 lib
   postgresql-9.2-1003.jdbc3.jar

コンパイルはうまくいきます:

java -d classes/ src/com/freire/test/JDBCExample.java

ただし、実行するとエラーが発生します。

java classes/com/freire/test/JDBCExample

私は OS X Mountain Lion に取り組んでいることは言うまでもありません。

どんな助けでも大歓迎です。

4

3 に答える 3

4

最初に、Java プログラムの実行中.に代わりに使用するパッケージ名に言及する必要があります。/

クラス ディレクトリに移動し、次のように JDBCExample を実行します。

java com.freire.test.JDBCExample

しかし、postgres jar がクラスパスにないため、postgres ドライバー クラスが見つからないというメッセージが表示されます。そのため、プログラムの実行中にクラスパス オプションを使用し、postgres jar をクラスパスに追加する必要があります。

Windows の場合:

java -cp .;../lib/postgresql-9.2-1003.jdbc3.jar com.freire.test.JDBCExample

Linux の場合:

java -cp .:../lib/postgresql-9.2-1003.jdbc3.jar com.freire.test.JDBCExample
于 2013-10-07T02:02:40.420 に答える
1

Linux では、次を実行します。

javac -cp '.:postgresql-9.1-901.jdbc4.jar' postgresjavatest.java

java -cp '.:postgresql-9.1-901.jdbc4.jar' postgresjavatest

それはあなたのためのjdbcドライバーになります。jarファイルが同じ場所にあることを確認してください

于 2014-01-29T09:58:19.430 に答える
0

プログラムをコンパイルして実行するときは、postgresql-9.2-1003.jdbc3.jar がクラスパス内にあることを確認する必要があります。

使ってみて

javac -cp lib/postgresql-9.2-1003.jdbc3.jar -d classes/ src/com/freire/test/JDBCExample.java

アプリケーションをコンパイルし、

java -cp lib/postgresql-9.2-1003.jdbc3.jar;./classes com.freire.test.JDBCExample

それを実行するには...

nb Junedが指摘したように、技術的には、クラスパスに参照は必要ありませんが、lib/postgresql-9.2-1003.jdbc3.jarコンパイル時の依存関係を複雑なプロセスに含める方法のデモンストレーションと考えてください;)

于 2013-10-07T02:05:00.077 に答える