日食在Java项目中加载DLL文件(Loading dll file inside eclipse

2019-08-07 21:12发布

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

在这里,我基本上是试图连接到我的SQL Server使用微软SQL给予司机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

Answer 1:

如果你想使用一个DLL从Eclipse内,您可能需要包括在系统中的位置的DLL PATH ,或者你需要明确指定java.library.path在Eclipse的运行配置属性。



Answer 2:

另一种选择是像这样添加到项目的主类的VM参数:

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

(指定路径sqljdbc_auth.dll文件)。 有没有必要改变环境路径或Eclipse IDE的JVM参数。

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



Answer 3:

在Windows平台上的java.library.path默认为PATH环境变量。 简单的解决办法是复制DLL到您的路径(如Windows / system32)下,并重新启动Eclipse。 另外,DLL类型必须,如果你正在使用32位的Java,那么你应该使用32位的DLL的Java版本,即匹配



文章来源: Loading dll file inside eclipse java project