从jar文件运行程序时jdbc连接失败

时间:2012-05-14 13:11:33

标签: sql-server jdbc jar connection deadlock

我有一个应用程序,我使用JDBC连接。当我从Eclipse环境运行它时,没有任何问题,也没有连接。 但是,当我将其打包到可执行jar文件中,并从命令行运行它,同时调用行

DriverManager.getConnection(url, user, password);

使用正确的凭据,应用程序将被冻结。 (错误的登录尝试一切正常 - 抛出SQLServerException)。 我尝试使用不同的库选项创建jar文件,但结果是一样的。

有人可以帮忙吗?

我使用sqljdbc4.jar库

我的数据库类的构造函数:

public Database(String url, String user, String password) throws SQLException, ClassNotFoundException {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    System.out.println("forname");
    connection = DriverManager.getConnection(url, user, password);
    System.out.println("get connection");
}

正确登录后,不会抛出异常,也不会打印出“get connection”字符串(只打印“forname”字符串)

2 个答案:

答案 0 :(得分:1)

您使用的是Java 6 Update 29吗?如果是这样更新到Java 6 Update 30或更高版本(最好是最新版本:Update 32)。该Java版本中存在一个错误导致Microsoft SQL Server JDBC驱动程序挂起。

答案 1 :(得分:0)

“冻结”?您是否捕获带有空捕获块的异常?

我敢打赌,当您在Eclipse中运行时,JDBC驱动程序JAR位于CLASSPATH中,但在运行可执行JAR时则不会。将Class-Path添加到JAR清单中,并将所有JAR与可执行JAR放在一起。应该这样做。