Jar 未在其他电脑上执行 [JDBC 外部 jar/maven 依赖性问题,连接未建立]
Jar not getting executed in other's pc [problem with JDBC external jar/maven dependency, connection not getting established]
我已经编写了使用 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");
}
我将代码导出为 运行nable jar,当我使用 java -jar demoJava.jar
但是当我把我的罐子交给我的伙伴时,在他的计算机上(使用相同版本的java)我得到了错误,连接没有建立。
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication
有一种方法可以使我的代码通用,并且它会 运行 任何地方(当我导出为 运行nable jar 时,外部 mssqljdbc jar 是存在于我的 JAR 中)但它只在我的系统中执行。
我错过了什么?与驱动程序 dll 有什么关系?请提出建议。
此错误消息的第一个 Google 结果导致 Microsoft 的文档:
表示“这通常表示驱动程序在 JVM 库路径中找不到合适的 sqljdbc_auth.dll。”
这里有一个修复建议,用于指定 DLL 的路径,假设您有它。当然,这只适用于 Windows.
更通用的方法是使用 pure-java JDBC 驱动程序,例如 jTDS JDBC 驱动程序。
只需将 "mssql-jdbc_auth-8.4.0.x64.dll" 添加到其他人 jdk_version/bin 并重新运行该过程,它将起作用,我面临同样的问题。我就是这样解决的。
确保使用正确的版本 (64/86)
我已经编写了使用 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");
}
我将代码导出为 运行nable jar,当我使用 java -jar demoJava.jar
但是当我把我的罐子交给我的伙伴时,在他的计算机上(使用相同版本的java)我得到了错误,连接没有建立。
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication
有一种方法可以使我的代码通用,并且它会 运行 任何地方(当我导出为 运行nable jar 时,外部 mssqljdbc jar 是存在于我的 JAR 中)但它只在我的系统中执行。
我错过了什么?与驱动程序 dll 有什么关系?请提出建议。
此错误消息的第一个 Google 结果导致 Microsoft 的文档:
表示“这通常表示驱动程序在 JVM 库路径中找不到合适的 sqljdbc_auth.dll。”
这里有一个修复建议,用于指定 DLL 的路径,假设您有它。当然,这只适用于 Windows.
更通用的方法是使用 pure-java JDBC 驱动程序,例如 jTDS JDBC 驱动程序。
只需将 "mssql-jdbc_auth-8.4.0.x64.dll" 添加到其他人 jdk_version/bin 并重新运行该过程,它将起作用,我面临同样的问题。我就是这样解决的。
确保使用正确的版本 (64/86)