【问题标题】:java.lang.ClassNotFoundException: org.postgresql.Driver whilte trying to connect from springjava.lang.ClassNotFoundException: org.postgresql.Driver 尝试从 spring 连接
【发布时间】:2015-07-19 19:33:05
【问题描述】:

我正在尝试从 Spring 上开发的 java 应用程序连接到 postgresql 数据库。

奇怪的是,如果我将它作为 java 应用程序运行,它可以正常工作。

当您尝试在服务器上运行它时,它会引发异常

java.lang.ClassNotFoundException: org.postgresql.Driver 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305) 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157) 在 java.lang.Class.forName0(本机方法) 在 java.lang.Class.forName(未知来源) 在 com.CBTD.database.BaseDeDatos.establecerConexion(BaseDeDatos.java:31) ....

Spring (STS) 和 postgresql 有什么不兼容的地方吗?

控制器代码:

@RequestMapping(value = "/inicio", method = RequestMethod.GET)
public String ObtenerUsuario(@RequestParam(required=true) String user, @RequestParam(required=true) String pass){

    LoginExpert login = new LoginExpert();
    if (login.validarUsuario(user, pass)){
        return "inicio";
    }else{
        return "login";
    }

}

中间类

public boolean validarUsuario(String user, String pass){

    TablaUsuario tu = new TablaUsuario();
    Usuario us = new Usuario();
    try {
        us = tu.buscarUsuario(user);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return (us.getContrasena().equals(pass));

}

我访问数据库的类(这部分作为 java 应用运行正常)

public Usuario buscarUsuario(String nombre) throws SQLException{

    String sql = "SELECT * from usuario WHERE nombre_usuario = '"+nombre+"'";

    BaseDeDatos.getInstancia().establecerConexion();
    ResultSet rs = BaseDeDatos.getInstancia().ejecutarQuery(sql);

    Usuario us= new Usuario();
    while(rs.next()){
        us.setNombreUsuario(rs.getObject(2).toString());
        us.setContrasena(rs.getObject(3).toString());
        us.setActivo(rs.getBoolean(4));
    }


    BaseDeDatos.getInstancia().cerrarConexion();

    return us;

}

【问题讨论】:

    标签: java spring postgresql spring-mvc


    【解决方案1】:

    尝试将 porstgresql 驱动放到 WEB-INF/lib 文件夹中

    【讨论】:

    • 抱歉,但是...我该怎么做?
    • WEB-INF 目录是应用程序的根目录,包含库、配置文件和类。所有库都应该放在 WEB-INF/lib 目录中。您应该下载 PostgreSQL jdbc 驱动并将其放在您的 lib 目录中。
    【解决方案2】:

    我已经修好了。我需要在 pom.xml 文件中添加 postgresql 依赖项

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

    现在它工作得很好 =) 谢谢fpr的帮助!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 2017-06-08
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 2019-01-29
      相关资源
      最近更新 更多