Java FX JAR文件找不到SQL Server驱动程序

问题描述 投票:0回答:1

昨天我奋战了8个小时,让我的Java FX (11) Standalone JAR根本无法工作。我终于做到了,现在当我通过以下方式运行它时 java -jar myjar.jar (有fx组件的路径信息),它至少 "工作 "了,因为我可以看到我 "自己的应用程序 "的错误信息和消息框lol。

这个应用程序需要连接到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.No suitable driver found for jdbc:sqlserver:/localhost:1433;database=mydatabase;userName=myuser;password=mypword"。No suitable driver found for 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时,我就收到了错误信息。

还尝试了老式的 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") 毫无用处,甚至认为它不应该是必要的,也不需要从IDE运行。

这让我抓狂,而且花了比它应该更多的时间。我是新来的,希望这是简单的东西,我忽略或不知道的。任何帮助MUCH赞赏。

sql-server javafx jdbc jar executable-jar
1个回答
0
投票

好的--这里是对我有效的(中间)答案。很明显,在 cmd 行中使用"-module path "声明会以某种方式覆盖 MANIFEST 中的 Class-path。要么就是--不知道--不认为我有一个 "模块化 "项目。我不是从Maven构建的,模块info也不是活动的。

总之--我只是把驱动jar放在我从cmd使用的 "模块路径 "中,就成功了。我现在想知道如何让这个东西 "双击",这样我就不用从cmd行或使用批处理文件来发布了。

© www.soinside.com 2019 - 2024. All rights reserved.