我有一个连接到 SQL Server 2008 实例的 Java EE Web 应用程序。除了其中一个之外,我在连接和检索所有表时都没有任何问题。Tomcat日志中的错误是:
警告:无法加载 sqljdbc_auth.dll 原因:- java.library.path 中没有 sqljdbc_auth
我有一个连接到 SQL Server 2008 实例的 Java EE Web 应用程序。除了其中一个之外,我在连接和检索所有表时都没有任何问题。Tomcat日志中的错误是:
警告:无法加载 sqljdbc_auth.dll 原因:- java.library.path 中没有 sqljdbc_auth
1)在此处下载JDBC 驱动程序 。
2) 解压文件并转到sqljdbc_version\fra\auth\x86或\x64 3) 将
sqljdbc_auth.dll
复制到C:\Program Files\Java\jre_Version\bin 4) 最后重启 eclipse
如果您想从 Eclipse 执行此操作,请执行以下步骤:
1) 在你的 C: 驱动器中创建一个文件夹'sqlauth',并将 dll 文件sqljdbc_auth.dll复制到该文件夹中
1)转到运行>运行配置
2)为您的班级选择“参数”选项卡
3)在VM参数中添加以下代码:
-Djava.library.path="C:\\sqlauth"
4)点击“应用”并点击“运行”
随意尝试其他方法。
为了便于修复,请按照下列步骤操作:
错误很明显,不是吗?
您尚未添加存在 sqljdbc_auth.dll 的路径。在系统中找出 DLL 所在的位置并将其添加到您的类路径中。
如果这也不起作用,请将存在 DLL 的文件夹(我假设 \Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\enu\auth\x86)添加到您的 PATH 变量中。
同样,如果您要通过 ant 或 cmd,则必须使用 -Djava.library.path=[path to MS_SQL_AUTH_DLL] 明确提及路径
我刚刚遇到了同样的问题,但在我自己的应用程序中。我不喜欢复制 dll 的解决方案,因为它不是很方便,所以我做了一些研究并提出了以下编程解决方案。
基本上,在与 SQL 服务器进行任何连接之前,您必须添加sqljdbc_auth.dll
到路径.. 这很容易说:
PathHelper.appendToPath("C:\\sqljdbc_6.2\\enu\\auth\\x64");
一旦你知道怎么做:
import java.lang.reflect.Field;
public class PathHelper {
public static void appendToPath(String dir){
String path = System.getProperty("java.library.path");
path = dir + ";" + path;
System.setProperty("java.library.path", path);
try {
final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths");
sysPathsField.setAccessible(true);
sysPathsField.set(null, null);
}
catch (Exception ex){
throw new RuntimeException(ex);
}
}
}
现在集成身份验证就像一个魅力:)。
感谢https://stackoverflow.com/a/21730111/1734640让我弄清楚这一点。
为了解决我做了以下事情:
sqljdbc_auth.dll
到目录:C:\Windows\System32
我通过以下方式解决了这个问题:
将 com.microsoft.sqlserver 从 6.1.0.jre8 升级到 10.1.0.jre8-preview:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.1.0.jre8-preview</version>
</dependency>
添加缺少的依赖项:
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
使用以下 jdbc 连接:
jdbc:sqlserver://;authenticationScheme=NTLM;integratedSecurity=true;domain=;databasename=;encrypt=true;trustServerCertificate=true;user=;password=