Classe.forName ("org.postgresql.Erro do controlador" )
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
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
egetDrivers
foram melhorados para suportar o mecanismo Java Standard Edition Service Provider. Os controladores do JDBC 4. 0 devem incluir o ficheiroMETA-INF/services/java.sql.Driver
. Este ficheiro contém o nome da implementação de drivers JDBC dejava.sql.Driver
. Por exemplo, para carregar a classemy.sql.Driver
, o ficheiroMETA-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 usandoClass.forName()
continuarão a funcionar sem modificações.
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!