java - 在eclipse java项目中加载dll文件

标签 java sql-server-2008 jakarta-ee jdbc

我正在尝试将文件 sqljdbc_auth.dll 添加到项目库中。我将包含 dll 的文件夹添加为外部类文件夹。

在这里,我基本上是尝试使用 Microsoft 提供的 SQL 驱动程序连接到我的 SQL SERVER 2008 数据库。

我的代码是

private static void Connect(){
        try
        {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            String connectionUrl = "jdbc:hostname:1433;databaseName=dbname;"

                + "user=username;password=password";
            java.sql.Connection con = DriverManager.getConnection(connectionUrl);
        }
        catch(ClassNotFoundException e)
        {
            e.printStackTrace();
        }
        catch(SQLException e2)
        {
            e2.printStackTrace();
        }
    }`

我得到以下错误

WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:b83147c7-b45a-4f35-b601-195a0aa9c32c
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667)
    at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<init>(AuthenticationJNI.java:60)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2229)
    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 com.sagar.com.package1.T1.Connect(T1.java:21)
    at com.sagar.com.package1.T1.main(T1.java:37)
Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<clinit>(AuthenticationJNI.java:35)
    ... 13 more

最佳答案

另一种选择是在项目主类的 VM 参数中添加类似这样的内容:

-Djava.library.path="C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x64"

(指定 sqljdbc_auth.dll 文件的路径)。无需更改环境 PATH 或 Eclipse IDE jvm 参数。

对于项目的主类,选择菜单选项 Run As >> Run Configurations... Run Configurations...

关于java - 在eclipse java项目中加载dll文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14471150/

相关文章:

java - 传递 Java 对象最有效的方法?

sql-server - 需要 Sql server 2008 代码片段或模板建议

java - 从对话框中的数据表更改变量

bash - 如何使用 tomcat 7 在嵌入式 Web 应用程序中运行 bash 脚本(linux)?

javax.ws.rs.core.Response.readEntity() 陷入无限循环

java - 有没有办法完全隐藏Web应用程序代码?

java - 使用单个 FrameBuffer 实现多个 Shader 效果会导致伪影

java - ImageMagick 命令无法在 OSX 中的 JAVA 代码中运行

c# - 允许在 SQL 事务期间读取?

sql-server - 将一个表的数据与另一个表的数据进行比较的最佳方法是什么?