Соединитесь с базой данных 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.
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