Jar无法在其他人的PC中执行[存在JDBC外部jar / maven依赖关系的问题,无法建立连接]

问题描述

我已经编写了使用JDBC连接数据库代码,我使用的是 openJDK11.0.2、64位和外部jar [ mssql-jdbc-8.4.0.jre11 ](我将其添加到Eclipse的“属性”中的库中)

我还添加一个maven依赖项

<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.4.0.jre11</version>
</dependency>

因此,在我的代码中,我正在使用Windows身份验证,并且我的代码看起来像这样,

public static void main(String[] args) throws sqlException {
        String connString = "jdbc:sqlserver://" + serverName + "\\MSsqlSERVER:1433;" + "databaseName = testUserDb; integratedSecurity = true;";
        System.out.print("\nConnection String : " + connString + "\n");
        conn = DriverManager.getConnection(connString);
        System.out.println("\nConnection Established");
        System.out.println("\nSuccess");
    }

我将代码导出为可运行的jar,并且当我使用 java -jar demoJava.jar

执行我的jar时,代码运行正常。

但是当我把罐子给我的伴侣时,在他的计算机上(使用相同版本的Java)我得到了错误,连接没有建立。

Exception in thread "main" com.microsoft.sqlserver.jdbc.sqlServerException: This driver is not configured for integrated authentication

有一种方法可以使我的代码通用,并且可以在任何地方运行(当我导出为可运行的jar时,我的JAR中存在外部mssqljdbc jar),但它只能在我的系统中执行。 / p>

我想念什么?与驱动程序dll有关系吗?请提出建议。

解决方法

只需将“ mssql-jdbc_auth-8.4.0.x64.dll” 添加到其他人的jdk_version / bin并重新运行该过程,它将起作用,我遇到了同样的问题。这就是我解决的方法。

请确保使用正确的版本(64/86)

,

此错误消息的第一个Google结果导致Microsoft的文档:

https://techcommunity.microsoft.com/t5/sql-server/com-microsoft-sqlserver-jdbc-sqlserverexception-this-driver-is/ba-p/383296

表示“这通常表示驱动程序在JVM库路径中找不到相应的sqljdbc_auth.dll。”

这里有一个修复建议,用于指定DLL的路径,前提是您拥有它。当然,这仅适用于Windows。

更通用的方法是使用纯Java JDBC驱动程序,例如jTDS JDBC驱动程序。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...