首页 > 解决方案 > Java FX JAR 文件找不到 SQL Server 驱动程序

问题描述

昨天我打了 8 个小时才让我的 Java FX (11) Standalone JAR 完全可以工作。我终于做到了,现在当我通过java -jar myjar.jar(使用 fx 组件的路径信息)运行它时,它至少“有效”,因为我可以看到我的“自己的应用程序的”错误消息和消息框大声笑。

此应用需要连接到 SQL Server。它在 IDE (IntelliJ) 中运行良好。对于 JAR,我没有包含已签名的 SQL Server 驱动程序。没什么大不了的 - 我也只是部署它并将它放在路径中。但是,JAR 文件在运行时无法“看到”驱动程序(或类 - 不确定)。这是信息:

SQL Server 驱动程序是mssql-jdbc-8.2.2.jre11.jar

我的连接代码是: connection = DriverManager.getConnection(connectString);connectString = "jdbc:sqlserver://localhost:1433;database=mydatabase;userName=myuser;password=mypword"

再次 - 这在 IDE 中运行良好。但是,从 jar 运行,它得到“java.sql.SQLException:没有为 jdbc 找到合适的驱动程序:sqlserver://localhost:1433;database=mydatabase;userName=myuser;password=mypword”

我已将其mssql-jdbc-8.2.2.jre11.jar放入与 jar 相同的目录中。我已经将它包含在 MANIFEST.MF 中,Class-Path: mssql-jdbc-8.2.2.jre11.jar并在 jar 文件的“lib”子目录中尝试了它Class-Path: /lib。没有任何效果!我只是不断收到“没有合适的驱动程序”错误。完整的清单文件如下所示:

Manifest-Version: 1.0
Class-Path: /lib
Main-Class: com.product.Launcher

这是实际启动应用程序的命令行的完整调用:java --module-path C:/Users/KMatson/Documents/JetBrains/openjfx-11.0.2_windows-x64_bin-sdk/javafx-sdk-11.0.2/lib/ --add-modules javafx.controls,javafx.fxml,javafx.graphics -jar myjar.jar这确实会运行应用程序,但是一旦应用程序尝试连接到 SQL,我就会收到错误消息。

即使认为它不应该是必要的,也不需要从 IDE 运行,也尝试了旧式Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")但无济于事。

这让我发疯,并且花费的时间比它应该的要多。我对这一切都很陌生,希望这是我忽略或不知道的简单事情。非常感谢任何帮助。

标签: sql-serverjavafxjdbcjarexecutable-jar

解决方案


好的 - 这是对我有用的(中间)答案。显然,在 cmd 行中声明“--module path”会以某种方式覆盖 MANIFEST 中的 Class-path。无论是那个还是什么 - 不知道 - 不认为我有一个“模块化”项目。我不是从 Maven 构建的,并且 module-info 没有激活。

无论如何 - 我只是将驱动程序 jar 放在我从 cmd 使用的“模块路径”中,它就可以工作了。我现在正试图弄清楚如何使这个东西“双击”,所以我不必从 cmd 行发出或使用批处理文件。


推荐阅读