2012-06-05 1 views
12

私はWindows上でEclipseを実行しています。java.lang.ClassNotFoundException:org.postgresql.Driver、Android

私はJDBC4をダウンロードし、プロジェクト>プロパティ>外部JARを追加して、そのファイルを参照してビルドパスに追加しました(.classpathファイルが正しいlibパスを示しています)。

パッケージは[参照済みライブラリ]フォルダに表示されるので、チュートリアルを続行します。

import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.PreparedStatement; 
    import java.sql.SQLException; 

    .... 

    public void open() 
     { 
    try { 
     Class.forName("org.postgresql.Driver"); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 

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

私はinclude org.postgresql.*;を試してみました、それはそのような単純なことだと思うが、私は

java.lang.ClassNotFoundException: org.postgresql.Driver 

(必要であれば、私はより多くを提供することができます)

で始まるこの大きな長いスタックトレースで打撃を受けますしかしそれはいずれも助けにはなりませんでした。私もJDBC3を試しましたが、そこには運がありません。

私はDriver JDBC PostgreSQL with Androidを見ましたが、これはあくまでもHTTP + JSONの方が良いと言っているというあいまいな回答でした。私は一度も使ったことがありません。

私はAndroid、postgresql、Web開発の新機能ですから、簡単な答えが分かります。

+1

'libs'ではなく' lib'フォルダに.jarを置きましたか? [ADT r17](http://tools.android.com/recent/dependencies inandroidprojects)以降、外部の場所から参照されるライブラリは.apkにパッケージ化されません。その結果、あなたのプロジェクトはコンパイルされますが、実行時にライブラリがないために 'NoClassDefFoundError'を実行します。ところで、そんなに多くの似たようなQ&Aがあります。例えば[this one](http://stackoverflow.com/a/9820881/1029225)。 –

+0

それは動作するようになった。多くのことを学ぶ:Pありがとう! – user1438048

答えて

0

これはCLASSPATHの問題です。 PostgreSQL JDBCドライバは、クラスローダがロードしようとしたときに使用できません。それをCLASSPATHに正しく追加する必要があります。

Eclipseで動作する場合は、ビルドパスにJARを追加すると、がCLASSPATHに追加されるためです。 EclipseトレーニングホイールなしでCLASSPATHがどのように機能するのかを理解する必要があります。

-2

依存関係が正しく構成されていると仮定すると(コメントで指摘されているlibs directory in Android SDK version 17 or aboveを参照)、明示的にドライバマネージャに登録することで、9.2ドライバを動作させることができます。

の代わりに:

Class.forName("org.postgresql.Driver"); 

用途:

DriverManager.register(new org.postgresql.Driver()); 

(私も9.3から1100-jdbc41瓶で試してみたが、これは動作しません。)

explained by Craig Ringer in an answer to a duplicate questionというように、AndroidからJDBCを使用することはほとんどありません。なぜなら、JDBC接続はAndroidデバイスで一般的に使用されるネットワーク使用パターンにはあまり適していないからです。

0

ダウンロードとJDBCのJARファイルを追加し、パスを構築するためのjarパッケージビルド-追加パスにlibフォルダ(WebContentを-WEB-INF-LIB)、および右クリックにjarファイルのパッケージを置く必要がありますあなたが使用しているツールのビルドされたパスには、上記の解決策のどれもが私の場合にはうまくいかなかったため、一時的な解決策になるかもしれません。

4

Mvnrepositoryで説明したように、プロジェクトにPostgreSQL JDBCドライバを追加する必要があります。

Grandle

// http://mvnrepository.com/artifact/postgresql/postgresql 
compile group: 'postgresql', name: 'postgresql', version: '9.0-801.jdbc4' 

Mavenの

<dependency> 
    <groupId>postgresql</groupId> 
    <artifactId>postgresql</artifactId> 
    <version>9.0-801.jdbc4</version> 
</dependency> 

することもできますdownloadJARとインポート手動でプロジェクトに。

+1

これは正しいものですか? https://mvnrepository.com/artifact/org.postgresql/postgresql – Mygod

+0

@Mygodありがとう、私は私のリンクを更新しました。 –

関連する問題