我上课简单。然后,我尝试编译并运行它,看到ClassNotFoundException。
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();
}
}
我正在使用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!
我做错了什么?因此,这是postgrsql库
https://www.dropbox.com/s/idx5l0kub5rn1b8/postgresql.jar?dl=0
在命令行上,
java DBProcessor
应该
java -cp .;postgresql.jar DBProcessor
而且,因为它包含java.sql.Driver
,所以当您使用它时,可以将其删除
// 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,
增强了这些
DriverManager
方法getConnection
,getDrivers
以支持Java Standard Edition
Service Provider机制。JDBC 4.0驱动程序必须包含该文件META- INF/services/java.sql.Driver
。该文件包含的JDBC驱动程序实现的名称java.sql.Driver
。例如,要加载my.sql.Driver
类,该META- INF/services/java.sql.Driver
文件将包含以下条目:my.sql.Driver
应用程序不再需要使用显式加载JDBC驱动程序
Class.forName()
。当前使用JDBC驱动程序加载的现有程序Class.forName()
将继续运行,而无需进行任何修改。
问题内容: 我在Netbeans 7.2上遇到此错误,它说ClassNotFoundexception和InstantationException。我真的在这个问题上陷入困境。请帮助我。 问题答案: 那么这个简单的方法呢? 我也想知道为什么您要用这种方式连接数据库?最好让服务器对其进行管理。 首先像这样配置(如果您使用的是tomcat): 然后,简单地从servlet / etc中的该资源获取连接
./tested/resta.java 。/tested/suma.class 。/tested/resta.class 。/test/testsuma.class 。/test/testsuma.java 。/test/testsuma.class 。/test/testsuma.class 。/spumevaluador.class 。/spumevaluador.java 当我运行Spume
问题内容: 我想使用其名称创建指定类的实例。我的代码如下所示。 我收到编译器警告。我这样做正确吗?甚至有可能使用类的名称并获得该类型的实例,因为我不认为编译器有任何方式可以知道类型是什么? 谢谢 问题答案: 我认为第一种方法应如下所示: 没有那些讨厌的类型安全警告,您不能使用类型参数…进行向上的类型转换。 顺便说一句,如果您忽略了这些警告,则create方法可能会创建某个类的实例,该类与调用方使用
问题内容: Java程序中的“思考”如下: 我期望输出如下: 但是得到 显然,try块抛出ClassNotFoundException,这是意外的。有什么想法为什么代码会抛出此错误而不是像预期的那样初始化Gum类? 问题答案: 你的类在包,所以他们完全合格的名称,和。仅接受标准名称: 参数: -所需类的完全限定名称。 将您的代码更改为:
问题内容: 问题答案: 完全不与JDBC直接相关。它只是加载一个类。 大多数JDBC驱动程序类通过调用在自己的静态初始化器中注册自己registerDriver()。 是真正不需要调用的真正调用(除非你编写自己的JDBC驱动程序)。 请注意,在JDBC 4 中,如果你的JDBC驱动程序是最新的,则不需要它们中的任何一个,因为可以使用服务定位机制找到驱动程序(即,只需忽略该调用并照常打开连接)。有关
问题内容: 和之间有什么区别? 我不了解其中的重大区别(我已经阅读了一些有关它们的信息!)。请你帮助我好吗? 问题答案: 也许一个示例演示如何使用两种方法将有助于你更好地理解事物。因此,请考虑以下类: 如其javadoc中所述,调用将返回与具有给定字符串名称的类或接口关联的对象,即它返回受type变量影响的对象。 然后,调用创建该 对象表示的类的新实例。就像通过带有空参数列表的表达式实例化该类。换