【问题标题】:Connect to DB2 database in eclipse via jdbc在eclipse中通过jdbc连接DB2数据库
【发布时间】:2014-07-11 04:43:17
【问题描述】:

我正在尝试通过 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

项目属性一定有问题,但我真的不知道去哪里找。

【问题讨论】:

  • 您的用户名或密码是否偶然包含非 ASCII 字符?
  • 您使用的是什么 JRE?似乎未找到 sun.io.UnknownCharacterException,这可能特定于 Sun/Oracle JRE。您是否尝试过其他方法,例如实例化 com.ibm.db2.jcc.DB2SimpleDataSource 实例?
  • 我没有让它与 com.ibm.db2.jcc.DB2SimpleDataSource 一起使用。您能否提供适合我的案例的示例代码?我正在使用 JRE 1.4 顺便说一句。

标签: eclipse jdbc db2 eclipse-juno


【解决方案1】:

将 DB2 jar 更改为 db2jcc4-9.7.jar 后,它可以正常工作,没有任何问题。

我使用的JDK版本是1.8.0_131

【讨论】:

    【解决方案2】:

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

    【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      尝试使用来自驱动程序的直接连接,具有相同的类路径和用户。这样可以确保你的环境配置正确,问题出在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 中配置这一行,方法是在“运行...”对话框中传递参数,并使用与运行应用程序相同的类路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-23
        • 1970-01-01
        • 1970-01-01
        • 2021-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多