【问题标题】:Unable to connect to DB2 Database using java?无法使用 java 连接到 DB2 数据库?
【发布时间】:2014-04-11 10:59:45
【问题描述】:

我正在尝试连接到位于服务器上的远程 DB2 数据库。我已经使用 ODBC 建立了必要的 DSN 连接,并且测试成功。所以在下面的代码中,我使用的是我的 DSN 名称 IMRM2,对吗?

但我的主要问题是,即使在将 db2jcc.jar、db2jcc_license_cu.jar 添加到我的 Eclipse 库之后,我仍然收到以下错误。 ?

错误:

java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
    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)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at ConnectToDb2.makeConnection(CreateChart.java:19)
    at CreateChart.main(CreateChart.java:63)
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
    at java.util.zip.ZipFile.read(Native Method)
    at java.util.zip.ZipFile.access$1400(Unknown Source)
    at java.util.zip.ZipFile$ZipFileInputStream.read(Unknown Source)
    at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(Unknown Source)
    at java.util.zip.InflaterInputStream.read(Unknown Source)
    at sun.misc.Resource.getBytes(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    ... 11 more

Java 文件。

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

class ConnectToDb2{

    String jdbcClassName="com.ibm.db2.jcc.DB2Driver";
    String url="jdbc:db2:IMRM2";
    String user="db2inst1";
    String password="DB2";
    Connection connection = null;


        public void makeConnection()
        {   

            try 
            {   
                Class.forName(jdbcClassName);
                connection = DriverManager.getConnection(url, user, password);
            } 

            catch (ClassNotFoundException e) 
            {
                e.printStackTrace();
            } 

            catch (SQLException e) 
            {
                e.printStackTrace();
            }


            finally
            {
                if(connection!=null)
                {
                    System.out.println("Connected successfully.");
                    try 
                    {
                        connection.close();
                    }

                    catch (SQLException e) 
                    {
                        e.printStackTrace();
                    }
                }
            }//End of finally 

        } // End of method makeConnection

}


public class CreateChart {


    public static void main(String[] args) {

        ConnectToDb2 obj_connectdb2 = new ConnectToDb2();

        obj_connectdb2.makeConnection();

    }

}

【问题讨论】:

  • 你能分享你的项目eclipse构建路径吗?
  • "java.util.zip.ZipException: 无效的 LOC 标头(错误签名)" - 看起来您的驱动程序的 jar 文件已损坏

标签: java db2


【解决方案1】:

这一行指出了根本问题:

Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)

您的驱动程序文件可能已损坏。如果您使用 zip 程序打开它,您可能会看到指示的错误。

解决方案:重新下载驱动程序。

类似的问题、问题和解决方案: tomcat7: Could not load JDBC driver class [com.mysql.jdbc.Driver]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2018-11-30
    • 2018-10-04
    相关资源
    最近更新 更多