java.lang.ClassNotFoundException:org.postgresql.Driver,Android

时间:2012-06-05 19:16:40

标签: java android postgresql classnotfoundexception

我在Windows上运行Eclipse。

关注this tutorial我下载了JDBC4,使用Project> Properties>添加外部JAR,浏览文件,将其添加到我的构建路径,它工作正常(.classpath文件显示正确的lib路径)。

该软件包出现在我的Referenced Libraries文件夹中,因此我继续本教程。

    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();
    }
}

我认为它会那么简单,但是我会被这个以

开头的长堆栈跟踪所击中
    java.lang.ClassNotFoundException: org.postgresql.Driver

(如果需要,我可以提供更多)

我试过include org.postgresql.*;,但这也没有帮助。我也尝试过JDBC3,但也没有运气。

我看了Driver JDBC PostgreSQL with Android这提供了一个模糊的答案,说我最好只使用HTTP + JSON。我从未使用过。

我是Android,postgresql,web开发的新手,所以我们将非常感谢。

8 个答案:

答案 0 :(得分:8)

您需要在Mvnrepository中提到的项目中添加PostgreSQL JDBC驱动程序。

<强>摇篮

// 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>

您还可以download JAR 并手动导入您的项目。

注意:不推荐使用此答案中使用的编译。按照3替换实现。

答案 1 :(得分:5)

您应该将jar包放入lib文件夹(WebContent-WEB-INF-lib),然后右键单击jar包构建路径 - 添加到构建路径

答案 2 :(得分:0)

这是一个CLASSPATH问题;当类加载器尝试加载时,PostgreSQL JDBC驱动程序不可用。您需要正确地将它添加到CLASSPATH。

如果它在Eclipse中有效,那是因为将JAR添加到构建路径将其添加到CLASSPATH。您必须了解CLASSPATH如何在没有Eclipse训练轮的情况下为您提供帮助。

答案 3 :(得分:0)

将JDBC JAR文件下载并添加到您正在使用的工具的构建路径可能是一个临时解决方案,因为上述解决方案都没有在我的案例中解决。

答案 4 :(得分:0)

我遇到了同样的问题;但是我犯的错误是我仅在插件部分添加的postgre依赖关系;将postgre依赖项(以下内容)添加到项目依赖项部分后,它开始工作。

<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>    
</dependency>

答案 5 :(得分:0)

我为Gradel尝试了一百万种东西,我只需要将此行添加到build.gradel文件中即可。

dependencies {
    compile group: 'org.postgresql', name: 'postgresql', version: '42.2.1'
}

答案 6 :(得分:0)

我的 postgresql 驱动程序运行良好,直到我对我的项目进行了一些开发:添加了一些新文件,包括映射器文件,因为我使用了 Spring 和 MyBatis。突然,当我尝试在服务器--tomcat-上运行它时,出现无法加载 org.postgresql.Driver 的错误。

我的情况的解决方案: 重新启动 Eclipse。也许在某些方面,Eclipse 与驱动程序失去了联系。所以需要通过重启来刷新。

答案 7 :(得分:-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 jar,但这不行。)

请注意,作为explained by Craig Ringer in an answer to a duplicate question,使用Android中的JDBC并不是一个好主意,因为JDBC连接不太适合Android设备通常使用的网络使用模式。