2

我在 VM vare 上使用 windows server 2003,我的数据库在 MS SQL Server 2008 上。现在,当我使用 jdbc 驱动程序将我的 java 代码与数据库连接时,我遇到了以下异常。请给出一些解决方案。

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.microsoft.sqlserver.jdbc.AuthenticationJNI.SNISecGenClientContext([B[I[BI[B[I[ZLjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/util/logging/Logger;)I
    at com.microsoft.sqlserver.jdbc.AuthenticationJNI.SNISecGenClientContext(Native Method)
    at com.microsoft.sqlserver.jdbc.AuthenticationJNI.GenerateClientContext(AuthenticationJNI.java:80)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2691)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at test.jdbcdemo.main(jdbcdemo.java:24)
4

3 回答 3

1

您已启用integratedSecurity. 这意味着sqljdbc_auth.dll需要在 jvm 的库路径上。

很可能你的路径上没有这个库,它是错误的版本或错误的变体(x86 <> x64 <> IA64)。

于 2012-06-18T15:01:50.657 回答
0

一个老问题,但我今天遇到了这个问题。我不知道关于 Java 的第一件事,但对我来说,解决方法是将 Microsoft 的 JDBC 驱动程序复制到 Java 的 ext 文件夹中。

sqljdbc41.jar需要复制到C:\[java安装路径]\Java\jre7\lib\ext\

确保选择正确的版本(x86 或 x64)。

同样对于集成安全性,我需要在启动我的应用程序时引用 auth。

-Djava.library.path=C:\[Path to Microsoft JDBC Driver 4.1 for SQLServer]\sqljdbc_4.1\enu\auth\x86
于 2015-05-01T08:06:47.913 回答
0

在启动 SpringBatch 并JdbcBatchItemWriter写入 MS SQL Server 2008 时,我遇到了同样的异常。

Sqljdbc_auth.dll 在库路径上。事实证明,我正在使用 JRE 1.6 在 Eclipse 中运行我的 SpringBatch 应用程序。我通过使用 JRE 1.7(运行配置中的 Eclipse JRE-Tab)运行它解决了这个问题。

于 2015-05-18T15:10:23.443 回答