簡體   English   中英

JDBC連接在IDE(eclipse)中工作,但不在.jar文件中工作

[英]JDBC connection works in IDE (eclipse), but not in .jar file

我真的在這里看一個謎。 我在Eclipse中創建了一個Java程序並建立了一個JDBC連接。 代碼如下:

import java.sql.*;

public class Login {

    public static void main(String[] args) {
        try {
            // Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection connection = DriverManager
                    .getConnection("jdbc:sqlserver://localhost;databaseName=testdb; integratedSecurity=true;");
                                   //adding port 1433 doesn't make a difference 

            System.out.println("Connection successful");
            Statement st = connection.createStatement();
            ResultSet rs = st.executeQuery("select * from testtable");

            while (rs.next()) {
                line = rs.getString(2);
            }

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

當我在日食中運行時,一切都很好。 數據庫和表格都很好, Java Built Path中的庫和身份驗證都已設置,我得到了我想要的結果,即“Hello World”,它是所選表中的一個字符串。

但是創建可執行的JAR文件並運行它會引發異常“ 此驅動程序未配置為集成身份驗證 ”。 它甚至沒有連接,因此即使數據庫中存在錯誤,此時也無關緊要。

更令人困惑的事實是,幾個星期前,我還創建了一個可執行的JAR文件,它起作用了!

操作系統 :Windows Vista Home Premium x86

JDBC驅動程序位置 :“C:\\ sqljdbc_4.0 \\ enu \\ sqljdbc4.jar”

本機庫位置 :“C:\\ sqljdbc_4.0 \\ enu \\ auth \\ x86”

Java版本 :Java 7 Update 17和JDK 7 Update 17

以前,我使用了Update 21,但我改回去檢查驅動程序是否可能是原因。

那么,有什么建議嗎? 我將非常感激!

  • 檢查eclipse的運行時類路徑,然后嘗試創建系統級“CLASSPATH”變量並添加相同的路徑。 設置變量后,在新的命令提示符中執行它或重新加載環境變量

  • 確保您的可執行jar在MANIFEST.MF中具有所有必需的jar(以及MainClass)的依賴關系

  • 最后,在Java中創建第一個字母表(“登錄”而不是“登錄”)始終是Java中的一種做法

實際問題是,如果從eclipse運行項目,它將自動添加在run / run config // arguments中定義的運行參數,因此您可以使用正確設置的sqljdbc_auth.dll路徑運行程序。 但是,如果將應用程序導出到.jar文件並運行它,則會出現這些錯誤,因為auth文件沒有正確的類路徑。

因此,如果您使用適當的參數從命令行運行您的應用程序,它應該正常工作。

暫無
暫無

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

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