我有一个连接到SQL Server 2008实例的Java EE Web应用程序。连接和检索我的所有表格没有任何问题,除了其中一个。 Tomcat日志中的错误是:
警告:无法加载sqljdbc_auth.dll原因: - java.library.path中没有sqljdbc_auth
答案 0 :(得分:37)
1)下载 JDBC驱动程序 here。
2)解压缩文件并转到 sqljdbc_version \ fra \ auth \ x86 或 \ x64
3)将 sqljdbc_auth.dll 复制到 C:\ Program Files \ Java \ jre_Version \ bin
4)最后重启eclipse
答案 1 :(得分:11)
如果您想从Eclipse执行此操作,请执行以下步骤:
1)在C:盘中创建一个文件夹'sqlauth',并将dll文件 sqljdbc_auth.dll 复制到文件夹
1)转到运行>运行配置
2)为您的班级选择“参数”标签
3)在 VM参数:
中添加以下代码-Djava.library.path="C:\\sqlauth"
4)点击“应用”并点击“运行”
随意尝试其他methods。
答案 2 :(得分:8)
错误很明显,不是吗?
您尚未添加sqljdbc_auth.dll所在的路径。找出DLL所在的系统,并将其添加到类路径中。
如果这也不起作用,请将DLL所在的文件夹(我假设为\ Microsoft SQL Server JDBC Driver 3.0 \ sqljdbc_3.0 \ enu \ auth \ x86)添加到PATH变量。
再次,如果你要通过ant或cmd,你必须使用-Djava.library.path = [MS_SQL_AUTH_DLL的路径]明确提到路径
答案 3 :(得分:4)
为便于修复,请按以下步骤操作:
答案 4 :(得分:2)
我在我自己的应用程序中遇到了同样的问题。 我不喜欢复制dll的解决方案,因为它不是很方便所以我做了一些研究并提出了以下程序化解决方案。
基本上,在与SQL Server建立任何连接之前,您必须将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);
}
}
}
现在集成身份验证就像魅力一样:)。
答案 5 :(得分:0)
要解决此问题,我做了以下事情:
sqljdbc_auth.dll
复制到目录:C:\Windows\System32