Ошибка Java-JDBC-MySQL

#java #mysql #jdbc

#java #mysql #jdbc

Вопрос:

Я пытаюсь заставить свою Java-программу взаимодействовать с базой данных MySQL.

Итак, я немного почитал и скачал MySQL Connector / J. Я извлек его в свой домашний каталог ~. Вот содержимое.

 user@hamster:~$ ls
LoadDriver.class  LoadDriver.java  mysql-connector-java-5.1.18-bin.jar
  

Содержимое LoadDriver.java являются

 user@hamster:~$ cat LoadDriver.java 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
// Notice, do not import com.mysql.jdbc.*
// or you will have problems!

public class LoadDriver {
    public static void main(String[] args) {
        try {
            // The newInstance() call is a work around for some
            // broken Java implementations
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
}
  

Содержимое такое же, как у http://dev.mysql.com/doc/refman/5.1/en/connector-j-usagenotes-basic.html#connector-j-usagenotes-connect-drivermanager с единственным изменением, что исключение выводится на консоль в блоке catch.

Я компилирую ее следующим образом

 leonard@hamster:~$ javac LoadDriver.java
  

Когда я пытаюсь ее выполнить, результатом является следующее.

 leonard@hamster:~$ java LoadDriver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
  

Этот вывод соответствует выполняемой команде, но при попытке запустить его с помощью предписанного метода CLASSPATH я сталкиваюсь со следующей проблемой.

 leonard@hamster:~$ java -cp /home/leonard/mysql-connector-java-5.1.18-bin.jar LoadDriver
Exception in thread "main" java.lang.NoClassDefFoundError: LoadDriver
Caused by: java.lang.ClassNotFoundException: LoadDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: LoadDriver. Program will exit.
  

Я что-то упускаю? Как мне запустить собственные образцы кода MySQL.

Комментарии:

1. Я попытался, установив $CLASSPATH переменную среды, но она выдает мне ту же ошибку

2. @brunopereira81 Я чувствовал, что это была одна из специфических особенностей Ubuntu…

3. java -cp . LoadDriver возвращает ту же ошибку?

4. Он возвращает java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Ответ №1:

В пути к классу должны быть указаны как jar, так и текущий каталог.

 java -cp .:/home/leonard/mysql-connector-java-5.1.18-bin.jar LoadDriver