【问题标题】:An application running via jar cannot connect to MySQL NoSuchAlgorithmException: SHA-256 MessageDigest通过 jar 运行的应用程序无法连接到 MySQL NoSuchAlgorithmException: SHA-256 MessageDigest
【发布时间】:2020-11-21 16:22:59
【问题描述】:

有一个用 Kotlin TornadoFX (==java / JavaFX) 编写的应用程序,如果我通过 main 或任何其他类运行它一切正常,dB 连接和查询工作,但如果我收集一个 jar 文件(在我的情况下,我收集了普通jar和shadowjar)并运行它,它给出了一个错误:

java.sql.SQLException: ASSERTION FAILED: Exception java.security.NoSuchAlgorithmException: SHA-256 MessageDigest not available that should not be thrown, was thrown at
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) at
com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:455) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(
NonRegisteringDriver.java:199) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at dataBase.DatabaseHandler.getAuth(
DatabaseHandler.kt:128) at LogIn$root$1.invoke(LogIn.kt:18) at LogIn$root$1.invoke(LogIn.kt:12) at tornadofx.LayoutsKt.borderpane(Layouts.kt:465) at LogIn.(LogIn.kt:14) at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at
tornadofx.FXKt.find(FX.kt:432) at tornadofx.FXKt.find$default(FX.kt:406) at tornadofx.App.start(App.kt:81) at Main.start(Main.kt:9) at
com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326) at
com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at
com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at
com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$4(WinApplication.java:186) at java.lang.Thread.run(Unknown Source)

在LogIn类中,DB中有一个查询,分别在DatabaseHandler类中,实现了这个查询。

什么情况下会出现这个错误,如何处理?

P.S.:如果你删除对分贝的请求,jar 文件也将启动并工作,错误具体与分贝有关。

【问题讨论】:

    标签: java mysql exception connect


    【解决方案1】:

    程序似乎无法连接到某些库(意味着您的IDE中的其他jar文件或其他依赖项目) 开头的NoSuchAlgorithmException MessageDigest not available 中的文字暗示了这一点

    当 jar 文件或运行 jar 文件时 VM 的 PATH 中缺少库或依赖项目时,就会出现这种情况。

    在 Eclipse 中,在创建“可运行 jar 文件”时,您可以选择是否应将依赖库与您的代码一起打包。

    然后不用Eclipse,可以在命令行修改jar文件的执行 java -jar ... 您可以添加指向更多路径的参数,即其他库或项目源所在的位置。

    【讨论】:

      猜你喜欢
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 2021-05-07
      • 2017-10-10
      • 2021-04-18
      • 1970-01-01
      相关资源
      最近更新 更多