【发布时间】:2020-09-09 07:02:03
【问题描述】:
昨天我为使我的 Java FX (11) Standalone JAR 能够正常工作而奋斗了 8 个小时。我终于做到了,现在当我通过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 相同的目录中。我已经用Class-Path: mssql-jdbc-8.2.2.jre11.jar 将它包含在MANIFEST.MF 中,并且还在Class-Path: /lib 的jar 文件中的“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,我就会收到错误消息。
还尝试了旧式 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") 无济于事,即使认为它不应该是必要的,也不需要从 IDE 运行。
这让我发疯了,而且花费的时间比应有的要多得多。我对这一切都很陌生,希望这是我忽略或不知道的简单事情。非常感谢任何帮助。
【问题讨论】:
-
您的应用程序是模块化的,因此它不使用类路径。
-
OK - 那么如何让它“看到”并使用 SQL Server 驱动程序呢?我仍然不清楚整个“模块化”的事情。
-
对不起@MarkRotteveel - 打算为我上面的后续问题标记你。
-
对不起,除了基本的玩具应用程序之外,我还没有真正使用过模块,所以我真的不能帮助你。我认为您需要将其添加到模块路径中,并且可能需要做一些额外的事情。
标签: sql-server javafx jdbc jar executable-jar