1

我有一个应用程序,我在其中使用 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”字符串)

4

2 回答 2

1

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

于 2012-05-15T17:23:56.967 回答
0

“冻结”?您是否使用空的 catch 块捕获异常?

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

于 2012-05-14T13:14:56.653 回答