![](/img/trans.png)
[英]getResourceAsStream works in Eclipse IDE but not in JAR format
[英]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.