Classe.forName ("org.postgresql.Erro do controlador" )

Tenho uma aula simples. Depois, tento compilar e executá-lo, mas vejo que a classe não encontrou excepção.

import java.sql.*;

public class DBProcessor{

private static String serverAdres = "127.0.0.1:5432";

private static String DBname = "dota";
private static String clientName = "postgres";
private static String password = "master";
private static Connection connection;

public static void connect() {
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        System.err.println("Where is your PostgreSQL JDBC Driver? "
                + "Include in your library path!");
        e.printStackTrace();
    }

    try {
        connection = DriverManager.getConnection("jdbc:postgresql://" + serverAdres + "/" + DBname, clientName, password);

    } catch (SQLException e) {
        System.err.println("Connection Failed! Check output console");
        e.printStackTrace();
    }

    if (connection == null) {
        System.err.println("Failed to make connection!");
    }
}

public static void main(String[] args){
    DBProcessor db = new DBProcessor();
    db.connect();
}
}

estou a usar o Windows cmd:

C:\rmi2>javac -classpath postgresql.jar DBProcessor.java
C:\rmi2>java DBProcessor
Where is your PostgreSQL JDBC Driver? Include in your library path!
java.lang.ClassNotFoundException: org.postgresql.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 DBProcessor.connect(DBProcessor.java:12)
at DBProcessor.main(DBProcessor.java:34)
Connection Failed! Check output console
java.sql.SQLException: No suitable driver found for jdbc:postgresql://127.0.0.1:
5432/dota
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DBProcessor.connect(DBProcessor.java:20)
at DBProcessor.main(DBProcessor.java:34)
Failed to make connection!
O que estou a fazer de errado? Então, esta é a biblioteca postgrsql https://www.dropbox.com/s/idx5l0kub5rn1b8/postgresql.jar?dl=0

 2
Author: otopba, 2014-11-05

3 answers

Na linha de comando, isto

java DBProcessor

Deve ser

java -cp .;postgresql.jar DBProcessor

E, porque inclui java.sql.Driver, Quando o tens a funcionar podes remover

// try {
//    Class.forName("org.postgresql.Driver");
// } catch (ClassNotFoundException e) {
//    System.err.println("Where is your PostgreSQL JDBC Driver? "
//            + "Include in your library path!");
//    e.printStackTrace();
// }

DriverManager Javadoc,

Os Métodos DriverManager getConnection e getDrivers foram melhorados para suportar o mecanismo Java Standard Edition Service Provider. Os controladores do JDBC 4. 0 devem incluir o ficheiro META-INF/services/java.sql.Driver. Este ficheiro contém o nome da implementação de drivers JDBC de java.sql.Driver. Por exemplo, para carregar a classe my.sql.Driver, o ficheiro META-INF/services/java.sql.Driver conteria a entrada:

 my.sql.Driver

As aplicações já não precisam de carregar explicitamente os controladores JDBC usando Class.forName(). Os programas existentes que actualmente carregam os controladores JDBC usando Class.forName() continuarão a funcionar sem modificações.

 5
Author: Elliott Frisch, 2014-11-05 21:00:00
Tens de ligar o condutor à tua IDE. se estiver a usar o Netbeans, carregue com o botão direito nas bibliotecas, adicione o jar/pasta e depois navegue pelo controlador.
 0
Author: BackGround Soft, 2014-11-05 21:04:21

Se o postgresql.o ficheiro jar não está acessível ao ambiente de execução Java que você vou buscar um café.idioma.ClassNotFoundException: org.postgresql.Excepção do condutor.

A maneira mais fácil de tornar o driver postgresql jdbc acessível ao seu aplicações é instalá-lo como uma extensão Java. A única coisa que precisas de fazer cp, mv ou no postgresql.jar ficheiro na pasta de extensão Java. La não há necessidade de colocar CLASPATH se você fizer isso. A pasta de extensão Java é $JAVA_HOME/jre / lib/ext ($JAVA_HOME no meu sistema é /usr/java/jdk1.3) ou para o Windows C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext

Isto torna a vida muito fácil, não precisava de voltar a colocar CLASSPATH no meu ambiente!
 0
Author: Reegan Ochora, 2015-01-21 05:04:07