Соединитесь с базой данных DB2 в Eclipse через JDBC

Я пытаюсь подключиться к базе данных IBM DB2 с Eclipse (версия Juno) через JDBC. Я добавил драйверы (внешние файлы JAR) в свой проект, и драйвер загружен правильно...

public static void main(String[] args) throws SQLException, ClassNotFoundException {
    Class.forName("com.ibm.db2.jcc.DB2Driver");
    System.out.println("Driver loaded");

    Connection dbConn = DriverManager.getConnection("jdbc:db2://***.**.***.*:50000/BWUEBDB", "username", "password");
    System.out.println("Connected");
}

Я также знаю, что данные соединения (путь к базе данных, имя пользователя, пароль) верны. Но я получаю java.lang.NoClassDefFoundError:

Exception in thread "main" java.lang.NoClassDefFoundError: sun/io/UnknownCharacterException
    at com.ibm.db2.jcc.b.a.<init>(a.java:238)
    at com.ibm.db2.jcc.b.b.a(b.java:1624)
    at com.ibm.db2.jcc.c.p.a(p.java:350)
    at com.ibm.db2.jcc.c.p.<init>(p.java:404)
    at com.ibm.db2.jcc.b.b.<init>(b.java:256)
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:163)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at AppTest.main(AppTest.java:17)
Caused by: java.lang.ClassNotFoundException: sun.io.UnknownCharacterException
    at java.net.URLClassLoader$1.run(Unknown Source)
    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)
    ... 9 more

Должно быть что-то не так со свойствами проекта, но я действительно не знаю, где искать.

4 ответа

Решение

Я получаю ту же ошибку. Я запускал его с использованием Java 8, я переключился на Java 7, и он работал.

Какую версию драйвера вы используете? Я столкнулся с той же проблемой с Java 1.8 и драйвером версии 2 (с именем db2jcc.jar). Используя драйвер версии 4 (с именем db2jcc4.jar), он работает безупречно. При использовании, например, tomcat, убедитесь, что в каталоге lib присутствует только правильный драйвер. Если оба драйвера являются постоянными, он будет строго использовать старый (версия 2).

Попробуйте использовать прямое соединение с драйвером, имея тот же classpath и пользователя. Таким образом, вы можете убедиться, что ваша среда правильно настроена, и проблема в Java.

http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.apdv.java.doc/src/tpc/imjcc_rjv00004.html

java com.ibm.db2.jcc.DB2Jcc -url jdbc:db2://mysys.myloc.svl.ibm.com:446/MYDB -user db2user -password db2pass -tracin

Вы даже можете настроить эту строку в Eclipse, передав параметры в диалоговом окне "Выполнить..." и используя тот же путь к классам, что и при запуске приложения.

После того, как я изменил jar DB2 на db2jcc4-9.7.jar это работает правильно без каких-либо проблем.

Я использую версию JDK 1.8.0_131

Другие вопросы по тегам