我想在java程序中连接PostgreSQL数据库
下了相应版本的JDBC放到java的lib下,设了classpath环境变量
但似乎java无法找到,请帮我看看错在那里
程序如下import java.sql.*;
public class DatabaseTest
{
public static void main(String[] args) throws Exception
{
try
{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e){System.out.println(e.getMessage());}
Connection con=DriverManager.getConnection"jdbc:postgresql://127.0.0.1/postgres");
}
}运行时就说找不到org.postgresql.Driver;
是我环境变量没设对?还是别的什么出问题了.
下了相应版本的JDBC放到java的lib下,设了classpath环境变量
但似乎java无法找到,请帮我看看错在那里
程序如下import java.sql.*;
public class DatabaseTest
{
public static void main(String[] args) throws Exception
{
try
{
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e){System.out.println(e.getMessage());}
Connection con=DriverManager.getConnection"jdbc:postgresql://127.0.0.1/postgres");
}
}运行时就说找不到org.postgresql.Driver;
是我环境变量没设对?还是别的什么出问题了.
结果自己琢磨了半天解决了
把jdbc的path放进classpath里面了,其实不行,要把完整的文件名放到classpath里面.
CLASSPATH=C:\Program Files\Java\jdk1.6.0_11\lib\postgresql-8.3-604.jdbc4.jar;.
晕死人,classpath还以为是path,居然连文件名也要.
还有一点,最后的" ;. " 一定不能省了,
因为要把当前目录放到classpath中,很多时候我们编写的class一般会在当前目录下保存和运行.
.;代表的是java文件当前目录,所以classpath里必须要设
以前我就是这样认为的,其实不行,classpath一定要加上jar包的文件名,而不能只是jar包的路径.
一开始我就是认为既然是classpath就直接路径就行了,找了很久才解决
还有一点,如果classpath直接弄成jar的完整路径加文件名,还会导致另外一个错,
就是你自己的class文件无法执行,因为已经不把当前路径做为class的收索路径了.
所以,classpath一定要在最后加一个 ";." ,把当前路径包含进来.