Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Loading dll file inside eclipse java project

I am trying to add the file sqljdbc_auth.dll to the project library. I add the folder containing the dll as external class folder.

Here I am basically trying to connect to my SQL SERVER 2008 database using SQL drivers given by Microsoft.

My code is

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();
        }
    }`

I get the following error

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
like image 694
user544079 Avatar asked Dec 15 '22 15:12

user544079


2 Answers

Another option is to add something like this to the VM parameters of the project's main class:

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

(specifying the path to the sqljdbc_auth.dll file). There's no need to change the environment PATH or Eclipse IDE jvm parameters.

For the project's main class, select menu option Run As >> Run Configurations... Run Configurations...

like image 169
Jose Tepedino Avatar answered Dec 29 '22 00:12

Jose Tepedino


If you want to use a DLL from inside Eclipse, you either need to include the DLL in a location on the system PATH, or you need to explicitly specify the java.library.path property in the run configuration of Eclipse.

like image 25
Mark Rotteveel Avatar answered Dec 29 '22 00:12

Mark Rotteveel