Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > Невидит драйвер JDBC


Автор: kaa 8.1.2009, 23:16
Всем доброго времени суток!

В общем бьюсь с драйвером JDBC для мускула.

Если подключаю либой в проект - всё работает.

Если уповаю на то, что класс найдется благодаря CLASSPATH-у - ничего не работает :(

Код:
Код

package javatestdb;

import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.util.*;


public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();

            Connection con = DriverManager.getConnection("jdbc:mysql://localhost/shop?user=root&password=root");

            Statement st = con.createStatement();

            ResultSet rs = st.executeQuery("SELECT * FROM users");

            ResultSetMetaData rsmt = rs.getMetaData();

            System.out.print("\n");

            int i = rsmt.getColumnCount();

            while(rs.next()){

                for(int c = 1; c < i; c++){

                    System.out.print(rs.getString(c));

                    if(c < (i-1)){

                        System.out.print(" | ");
                    }

                }

                System.out.print("\n");
            }

            con.close();
        }

        catch(Exception ex){

            ex.printStackTrace();

            System.exit(-1);

        }

    }

}


Ексэпшн:
Код

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        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:276)
        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:169)
        at javatestdb.Main.main(Main.java:27)
Java Result: -1



CLASSPATH:
Код

C:\Documents and Settings\xxxx>echo %CLASSPATH%
C:\Program Files\Linter\jdbc\linjdbc-1.4.jar;C:\Program Files\QuickTime\QTSystem\QTJava.zip;C:\jdbc\mysql-connector
-java-5.1.7-bin.jar;C:\velocity\velocity_1_5.jar

C:\Documents and Settings\xxxx>


Проверка класса на видимость:
Код

C:\Documents and Settings\xxxx>java com.mysql.jdbc.Driver
Exception in thread "main" java.lang.NoSuchMethodError: main

C:\Documents and Settings\xxxx>


тоесть виден...


Работаю в NetBeans 6.5

Что еще сделать, что бы класс драйвера находился - ума не приложу :(

Автор: powerOn 9.1.2009, 00:12
а основной проект как запускаешь? из IDE? Если так, возможно IDE со старыми переменными окружения работает? (Просто она их при старте один раз считывает). Обычно перезапуск IDE решает такие проблемы.

Автор: math64 9.1.2009, 00:41
Добавь в манифест путь до jar:
Код

Class-Path: lib/mysql-connector-java-x.x.x-bin.jar

Автор: kaa 9.1.2009, 15:25
powerOn, 

Запускаю через IDE, но я её перезапускал, я уж и комп перезагружал.

Потом пытался запустить с консоли собранный проект (jar) - тот же эффект.



math64, 
Понимаете, мне это не интересно, с таким же успехом я могу просто тупо подключить библиотеку в проект и собрать прям вместе с ней smile

Собственно сейчас так и приходится работать.

Автор: AntonSaburov 9.1.2009, 18:26
Насколько я знаю практически все IDE формируют свой собственный CLASSPATH на основаниии библиотек. Не буду утверждать 100-процентно, но по-моему так.
В этом случае системный CLASSPATH идет лесом.

Автор: kaa 9.1.2009, 20:49
AntonSaburov, 

Беда в том, что когда при запуске я прописываю classpath ручками - ему как бы пофигу.

Я бы особо не заморачивался, но давным-давно, год назад где-то, на NetBeans 5.5 всё хорошо получилось :(

Хочется повторить успех smile)


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