通过jdbc连接到eclipse中的DB2数据库

时间:2014-05-22 08:41:47

标签: eclipse jdbc db2 eclipse-juno

我尝试通过JDBC连接到Eclipse(Juno版本)的IBM DB2数据库。 我已将驱动程序(外部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 个答案:

答案 0 :(得分:6)

我得到了同样的错误。我使用java 8运行它,我切换到Java 7并且它工作。

答案 1 :(得分:6)

您使用的是什么版本的驱动程序?我遇到了Java 1.8和驱动程序版本2(名为db2jcc.jar)的相同问题。使用驱动程序版本4(名为db2jcc4.jar),它可以完美运行。当使用例如, tomcat,只有正确的驱动程序在lib目录中是持久的。如果两个驱动程序都是持久的,它将严格使用旧驱动程序(版本2)。

答案 2 :(得分:2)

尝试使用来自驱动程序的直接连接,具有相同的类路径和用户。通过这种方式,您可以确保正确配置环境,问题来自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中配置此行,方法是在&#34;运行...&#34;中传递参数。对话框,并在运行应用程序时使用相同的类路径。

答案 3 :(得分:0)

将DB2 jar更改为db2jcc4-9.7.jar后,它可以正常工作。

我使用的JDK版本是1.8.0_131