加载postgreSQL JDBC驱动程序

时间:2013-10-07 02:00:31

标签: java postgresql jdbc

我正在尝试为Java程序加载JDBC postgreSQL驱动程序。我知道这是在互联网上。我尝试了很多解决方案,但没有一个能为我工作。

问题是我收到了这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError:    
classes/com/freire/test/JDBCExample/class
Caused by: java.lang.ClassNotFoundException: classes.com.freire.test.JDBCExample.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

我的代码看起来像这样:

package com.freire.test;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

public class JDBCExample 
{
    public static void main(String[] argv) 
    {
        System.out.println("JDBC Connection Testing");
        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("PostgreSQL JDBC Driver not included!");
        }
    }
}

我的项目结构如下:

myProject
 src
   com
     freire
       test
         JDBCExample.java
 classes
   com
     freire
       test
         JDBCExample.class
 lib
   postgresql-9.2-1003.jdbc3.jar

编译工作正常:

java -d classes/ src/com/freire/test/JDBCExample.java

但执行会产生错误:

java classes/com/freire/test/JDBCExample

值得一提的是我正在开发OS X Mountain Lion。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

首先,您需要在运行java程序时使用.而不是/来提及程序包名称:

转到classes目录并运行JDBCExample:

java com.freire.test.JDBCExample

但它现在会因为找不到postgres驱动程序类而哭泣,因为类路径中缺少postgres jar。所以你需要在运行程序时使用classpath选项并将你的postgres jar添加到类路径中:

for windows:

java -cp .;../lib/postgresql-9.2-1003.jdbc3.jar com.freire.test.JDBCExample

for linux:

java -cp .:../lib/postgresql-9.2-1003.jdbc3.jar com.freire.test.JDBCExample

答案 1 :(得分:1)

在Linux上执行以下命令:

javac -cp'。:postgresql-9.1-901.jdbc4.jar'postgresjavatest.java

java -cp'。:postgresql-9.1-901.jdbc4.jar'postgresjavatest

它将为您提供jdbc驱动程序。确保jar文件在同一位置

答案 2 :(得分:0)

编译和运行程序时,需要确保postgresql-9.2-1003.jdbc3.jar在类路径中

尝试使用

javac -cp lib/postgresql-9.2-1003.jdbc3.jar -d classes/ src/com/freire/test/JDBCExample.java

编译应用程序和

java -cp lib/postgresql-9.2-1003.jdbc3.jar;./classes com.freire.test.JDBCExample

运行它......

nb 正如Juned指出的那样,从技术上讲,您不需要类路径中的lib/postgresql-9.2-1003.jdbc3.jar引用,但请考虑它是如何在复杂化过程中包含编译时依赖性的演示;)