Соединение с базой данных Java Oracle localhost (java.lang.ClassNotFoundException) - PullRequest
0 голосов
/ 24 июля 2011

В настоящее время я использую этот простой код, чтобы попытаться подключиться к моей базе данных на этом компьютере (в Java)

import java.sql.Connection;
import java.sql.DriverManager;

public class Main {
public static void main(String[] argv) throws Exception {       

    String driverName = "org.gjt.mm.mysql.Driver";
    Class.forName(driverName);

    String serverName = "localhost";
    String mydatabase = "xe";
    String url = "jdbc:mysql://" + serverName + "/" + mydatabase; 

    String username = "scott";
    String password = "tiger";
    Connection connection = DriverManager.getConnection(url, username, password);
   }
 }

По какой-то причине я не понимаю, что я получаю эту ошибку

Exception in thread "main" java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at Main.main(Main.java:10)

Я думаю, что эти классы находятся в файле ojdbc5.jar?Я не совсем уверен, как исправить эту ошибку, поэтому любая помощь будет отличной.

Ответы [ 3 ]

3 голосов
/ 24 июля 2011

Вы можете добиться большего успеха, если загрузите классы Oracle вместо MySQL:

String driverName = "oracle.jdbc.driver.OracleDriver";
Class.forName(driverName);


String serverName = "localhost";
String mydatabase = "xe";
String url = "jdbc:oracle:thin:@//" + serverName + ":1521/" + mydatabase; 
1 голос
/ 24 июля 2011

Я не знаю, откуда вы взяли этот код, но он содержит несколько ошибок:

  • String driverName = "org.gjt.mm.mysql.Driver"; предназначен для доступа к базам данных MySQL. Если вы намереваетесь получить доступ к экземпляру MySQL, используйте com.mysql.jdbc.Driver; org.gjt.mm.mysql.Driver будет работать, но сохраняется для обратной совместимости. Если вы намерены получить доступ к экземпляру Oracle с помощью драйвера типа 4, используйте oracle.jdbc.OracleDriver; избегайте использования oracle.jdbc.driver.OracleDriver, поскольку оно устарело и может быть недоступно в более новых драйверах (особенно в выпущенных для Oracle 11g).
  • String url = "jdbc:mysql://" + serverName + "/" + mydatabase; подразумевает, что вы хотите подключиться к экземпляру MySQL. Но вы говорите о доступе к Oracle. В таком случае драйвер Oracle просто не будет работать, поскольку он распознает URL-адреса JDBC определенного формата. Для использования тонкого драйвера, присутствующего в ojdbc5.jar / ojdbc6.jar, для доступа к базе данных с использованием имени и порта службы, вы должны использовать синтаксис имени службы тонкого стиля , как описано в Руководстве разработчика JDBC Oracle , Следовательно, ваш возможный формат URL JDBC должен быть:
    • jdbc:oracle:thin:scott/tiger@//localhost:1521/xe или
    • jdbc:oracle:thin:@//localhost:1521/xe, если вы не хотите передавать имя пользователя и пароль в URL JDBC.
0 голосов
/ 24 июля 2011

Java использует нечто, называемое "Classpath", чтобы найти классы, часто содержащиеся в файлах JAR (хотя и не всегда).

Эта опция "classpath" устанавливается с помощью выполнения командной строки с использованием --classpathили опция -cp.Вы должны вызвать команду java с этим параметром, указав расположение загруженных вами JAR-файлов, содержащих драйвер JDBC Oracle.

Если вы используете IDE, скорее всего, этот параметр можно установить автоматически, выполнив поисктакие параметры, как «Библиотеки», «Модули» или сам Classpath, в зависимости от вашей IDE.Какой IDE вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...