Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Опять 25. проблема подключения driver


Автор: x3bytes 12.11.2006, 04:08
вот код программы:
Код

/*
 * Assignment2.java
 *
 * Allows several instractions a PostgreSQL database.
 * The second assignment for CSC343 Fall 2006
 */

package assignment2;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
/**
 *
 * @author Oleksiy Khozyayenok
 */
public class Assignment2 {
    
    private Connection connection = null;// connection to DB
    
    // my variables
    public final static String password = "postgres";
    public final static String username = "postgres";
    public final static String url = "jdbc:postgresql://localhost/sample_db";
    
    // Constructor - Identifies the PostgreSQL driver C:\Program Files\Java\jre1.5.0_06\lib\ext\QTJava.zip

    public Assignment2() {
        try{
            Class.forName("org.postgresql.Diver");
        } catch(ClassNotFoundException cnfe){
            System.out.println("Couldn't find the driver!");
         
            System.out.println(System.getenv("CLASSPATH"));
            System.out.println("Stack trace of an error is: ");
            cnfe.printStackTrace();
            System.exit(1);
        }
    }
    
    // Connection to the DB with specific username and password
    public boolean connectDB(String url, String username, String password){
        connection = null;
        try{
            connection = DriverManager.getConnection(url, username, password);
        } catch(SQLException se){
            System.out.println("Couldn't connect! Stack trace of an error is: ");
            se.printStackTrace();
            System.exit(1);
        }
        if(connection != null) {
            System.out.println("Connection is established!");
            return true;
        } else{
            System.out.println("No connection! Check username and password or url.");
            return false;
        }
    }
    
    // Closing connection to the DB
    public boolean disconnectDB(){
        try{
            connection.close();
        }
        catch(SQLException se){
            System.out.println("Couldn't close connection!");
            System.out.println("Stack trace of an error is: ");
            se.printStackTrace();
            return false;
        }     
        return true;
    }
    
    public static void main(String[] args) {
        Assignment2 a2 = new Assignment2();
        //a2.connectDB(url, username, password);
        //a2.disconnectDB();
    }
    
}



при запуске выдаётся ошибка:
Код

compile:
run:
Couldn't find the driver!
./;D:\PGdata\postgresql-8.1-405.jdbc3.jar
Stack trace of an error is: 
java.lang.ClassNotFoundException: org.postgresql.Diver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at assignment2.Assignment2.<init>(Assignment2.java:30)
        at assignment2.Assignment2.main(Assignment2.java:75)
Java Result: 1
BUILD SUCCESSFUL (total time: 7 seconds)


мой driver лежит в D:\PGdata\postgresql-8.1-407.jdbc3.jar .

В Environments System variables
CLASSPATH = ./;D:\PGdata\postgresql-8.1-405.jdbc3.jar
Local Variables(для юзера)
CLASSPATH = ./;D:\PGdata\postgresql-8.1-405.jdbc3.jar

Я уже пытался скопировать этот драйвер(jar файл) в jdk1.5.0_09/jre/lib/ext/
и в jre1.5.0_09/jre/lib/ext/

Я кинул этот драйвер в папку с приложением во все дыры.

Я также пользуюсь NetBeans 5.5 и я заходил в Runtime->Databases->Driver и добовлял туда драйвер укзазывая его путь к файлу jar
Также я пытался в NetBeans - Tools->Library Manager->New Library... (создал PSQL library) добавил туда этот jar файл. И подключил эту библиотеку в проекте к Libraries.

Если запустить мой класс через cmd
java -classpath "D:\PGdata\postgresql-8.1-407.jdbc3.jar;" Asignment2.java
Будет ошибка выведена
Exception in thread "main" java.lang.NoClassDefFoundError: Assignment2/java

Вобщем я уже всё перепробовал и перерыл кучу всего, но так и не могу запустить программу.
Что мне делать? Что я не так делаю?

Автор: powerOn 12.11.2006, 09:27
Скачал драйвер http://jdbc.postgresql.org/download.html. (    8.1-407 JDBC 3)
Сделал так же:
Цитата(x3bytes @  12.11.2006,  04:08 Найти цитируемый пост)
Также я пытался в NetBeans - Tools->Library Manager->New Library... (создал PSQL library) добавил туда этот jar файл. И подключил эту библиотеку в проекте к Libraries.


Все работает...  smile . Проверь, действительно ли ты подключил библиотеку к проекту, и ту ли библиотеку. 

 smile И еще, в своем посте, ты пишешь то: postgresql-8.1-407.jdbc3.jar, то: postgresql-8.1-405.jdbc3.jar ... может с именами что не так?

Автор: check 12.11.2006, 11:25
Цитата(x3bytes @  12.11.2006,  04:08 Найти цитируемый пост)
Class.forName("org.postgresql.Diver");


Автор: x3bytes 12.11.2006, 18:26
To check:
Class.forName("org.postgresql.Diver");

А что я разве не так пишу?

To powerOn
Да так и делал.
Даже на форуме нашёл твои слова:
Цитата

Кстати, чтобы подключить его к NetBeans 5.0 заиди в меню tools -> Library Manager.
В появившимся окне нажмина кнопку New Library и введи имя твоей новой библиотеки.
После создания библиотеки, добавь в нее (кнопка Add Jar/Folder) mysql-connector-java-5.0.0-beta-bin.jar. Так ты окончательно создашь библиотеку, содержащую драйвер.
Потом просто подключи её к своему проекту. Для этого в окне Progects щелки правой кнопкой мыши
на папке Libraries и выбери Add Library. В появиввшемся списке библиотек выбирешь свою новоиспеченную библиотеку, и теперь можешь использовать её классы на своё усмотрение. smile 

всё равно не пашет, хоть головой об стену.

то что разные драйвера, это я уже разные пытался подключать.
Вот сейчас создал с нуля приложение.
Код

public class testApp {
    /** Creates a new instance of Main */
    public testApp() {
        try{
            Class.forName("org.postgresql.Diver");
        } catch(ClassNotFoundException cnfe){
            System.out.println("Couldn't find the driver!");

            System.out.println(System.getenv("CLASSPATH"));
            System.out.println("Stack trace of an error is: ");
            cnfe.printStackTrace();
            System.exit(1);
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        testApp ta = new testApp();
        
    }
}

создал и подключил библиотеку (см. выше).
и всё равно не работает. 

Автор: check 12.11.2006, 18:35
x3bytes,  я не знаю как называется драйвер для Postrgesql, с которым ты работаешь,  но мне показалось что в слове Driver пропущена буква "r".

Автор: x3bytes 12.11.2006, 18:38
Это уже становится интересным.

Переключился в IDEA 6.0
там создал такое же приложение тестовое.
Сделал File-> Settings->Project Settings-> в Global Libraries добавил (уже решил на диск C:\ скопиовать) туда новую projectlibrary  postgresql-8.1-407.jdbc3.jar .

И не работает всё тот же 
Код

Couldn't find the driver!
./;D:\PGdata\postgresql-8.1-405.jdbc3.jar
Stack trace of an error is: 
java.lang.ClassNotFoundException: org.postgresql.Diver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:164)
    at testApp.<init>(testApp.java:14)
    at testApp.main(testApp.java:29)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

Process finished with exit code 1


Добавлено @ 18:49 
Какой УЖас!!!  smile   smile   smile 
Сколько программирую У меня ещё ни разу такого не было!
Я просто забыл букву r в слове Driver.

За вчерашний день я перечитал тучу инфы про драйвера, их разновидности, подключение в разных IDE.
У меня уже на компе после этого стоят NetBeans, Eclipse, IDEA.

Спасибо большое check. Я уже сколько не смотрел в код, ну как слепой.
Спасибо powerOn. Я перечитал тучу постов с твоими описаниями к выполнению, всегда очень подробно и понятно пишешь.

Автор: powerOn 12.11.2006, 19:23
заходи еще, и не забывай помечать вопросы как решенные.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)