簡體   English   中英

java.lang.ClassNotFoundException:com / microsoft / sqlserver / jdbc / SQLServerDriver

[英]java.lang.ClassNotFoundException: com/microsoft/sqlserver/jdbc/SQLServerDriver

我對JAVA確實很陌生,但需要調用一個我已獲得訪問權限的SQL Server函數。

我已將Java調用內置到pl / sql函數中,並已從我的環境之一成功調用了它。 當我移到另一個環境時,我得到了錯誤

ORA-29532:Java調用因未捕獲的Java異常而終止:java.lang.ClassNotFoundException:com / microsoft / sqlserver / jdbc / SQLServerDriver

我已經對此進行了徹底研究,並檢查了JAVA的正確安裝,這看起來不錯,但我顯然缺少某些東西。 我需要以某種方式跟蹤此環境的差異,它在另一個環境中運行的事實證明了該類是正確的,因此它必須是配置問題。

JAVA類

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.net.Socket;
import java.io.IOException;

public class xxiceHJ
{
    protected static String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  
    protected static String DB_URL = "jdbc:sqlserver://999.999.99.99:1433";
    protected static String USER = "xxxx";
    protected static String PWD = "xxxxx123$";

    public static String getOrderStatus (String OrderNumber) throws SQLException, Exception
    {
        Connection conn = null;
        CallableStatement cs = null;
        ResultSet rs = null;
        String Message = null;
        String WarehouseId = "01";

        try
        { 
            // Register JDBC driver
            Class.forName(JDBC_DRIVER);

            //Open a connection
            conn = DriverManager.getConnection(DB_URL, USER, PWD);

            cs = conn.prepareCall("{call usp_get_order_status(?,?,?)}"); 
            cs.setString(1, WarehouseId);
            cs.setString(2, OrderNumber);
            cs.setString(3, Message);

            rs = cs.executeQuery();

            //if prodeure return a value
            if (rs.next())
            {
                Message = rs.getString(1);
            }

            //Clean-up environment
            rs.close();
            cs.close();
            conn.close();

//        }
//        catch (SQLException se)
//        {
//            //Handle errors for JDBC
//            cfFileNumber = "SQLException" + se.toString();
//            se.printStackTrace();
//        }
//        catch (Exception e)
//        {
//            //Handle errors for Class.forName
//            cfFileNumber = "Exception" + e.toString();
//            e.printStackTrace();
        }
        finally
        {
            //finally block used to close resources
            try
            {
                if (rs!=null)
                {
                    rs.close();
                }
            }
            catch (SQLException se2)
            {
                //nothing we can do
            }
            try
            {
                if (cs!=null)
                {
                    cs.close();
                }
            }
            catch (SQLException se2)
            {
                //nothing we can do
            }
            try
            {
                if (conn!=null)
                {
                    conn.close();
                }
            }
            catch (SQLException se)
            {
                se.printStackTrace();
            }

        }
        return Message;

    }



}

CLASSPATH變量是Java虛擬機(JVM)用於在您的計算機上定位JDBC驅動程序的搜索字符串。 如果驅動程序未在CLASSPATH變量中列出,則在嘗試加載驅動程序時會收到以下錯誤消息:java.lang.ClassNotFoundException:com / microsoft / jdbc / sqlserver / SQLServerDriver

JDBC驅動程序不是Java SDK的一部分。 如果要使用它,則必須將類路徑設置為包括sqljdbc.jar文件或sqljdbc4.jar文件。 如果類路徑缺少sqljdbc.jar或sqljdbc4.jar的條目,則您的應用程序將引發常見的“找不到類”異常。

sqljdbc.jar文件和sqljdbc4.jar文件安裝在以下位置:\\ sqljdbc _ \\\\ sqljdbc.jar \\ sqljdbc _ \\\\ sqljdbc4.jar

以下是用於Windows應用程序的CLASSPATH語句的示例: CLASSPATH = .; C:\\ Program Files \\ SQL Server的Microsoft JDBC驅動程序4.0 \\ sqljdbc_4.0 \\ enu \\ sqljdbc.jar
以下是用於Unix / Linux應用程序的CLASSPATH語句的示例: CLASSPATH =。:/ home / usr1 / mssqlserverjdbc / Driver / sqljdbc_4.0 / enu / sqljdbc.jar您必須確保CLASSPATH語句包含僅一個用於SQL Server的Microsoft JDBC驅動程序,例如sqljdbc.jar或sqljdbc4.jar。

有關更多信息,請參見:
http://support.microsoft.com/kb/313100
http://msdn.microsoft.com/en-us/library/ms378526.aspx

首先,請下載正確的sql驅動程序,然后根據操作系統檢查您使用的連接驅動程序是否正確。 然后,一旦必須測試連接是否正常,則將轉到下一步。 所以請檢查這個網址
適用於Linux的microsift sql服務器驅動程序https://msdn.microsoft.com/zh-cn/library/hh568451(v=sql.110).aspx

我的Linux版sql服務器驅動程序https://dev.mysql.com/downloads/connector/j/5.0.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM