我有一个应用程序,我使用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”字符串)
答案 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放在一起。应该这样做。