【问题标题】:JavaFx with SQLite deployment using JPakcage: App Doesnt load upon installation使用 JPackage 进行 SQLite 部署的 JavaFx:安装时不加载应用程序
【发布时间】:2021-04-05 15:20:23
【问题描述】:

所以我正在尝试部署一个 JavaFX(使用 SQLite)桌面应用程序

  • 我正在使用 open-JDK-16、java SDK-16 和 SQLite.3.20.1 JDBC 驱动程序

  • 我正在开发 Intellij IDEA(2020.3.2 社区版),当我运行我的代码时,它运行良好

  • 如果数据库文件不存在,将创建一个并在其中创建一个表并填充一些数据see my project folder

  • 使用 JPackage 部署后,安装程序已成功创建,我可以毫无问题地安装它

但是当我运行可执行文件时,它什么也没做,但控制台窗口会在执行时显示下面的输出。

非常感谢您,感谢任何可以帮助我解决此问题的人

这是我从窗口控制台收到的错误

Exception in Application start method
java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at java.base/sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: java/sql/Driver
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
        at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(Unknown Source)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Unknown Source)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Unknown Source)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Unknown Source)
        at sample.Main.Connector(Main.java:27)
        at sample.Main.start(Main.java:17)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(Unknown Source)
        at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
        ... 1 more
Caused by: java.lang.ClassNotFoundException: java.sql.Driver
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        ... 22 more
Exception running application sample.Main

【问题讨论】:

  • 你是如何调用 jpacakge 的?如果您从控制台运行程序,是否会打印任何内容? (在 Windows 上,您可能需要添加 --win-console 选项)
  • 感谢您的快速反馈@JornVernee 我尝试添加选项,控制台窗口出现一些错误然后消失,我无法真正捕获错误
  • 我已经修改了我的问题以显示我从控制台收到的错误消息
  • 你是如何调用 jpackage 的? (哪些选项等)
  • 我解决了这个问题,我的模块列表中缺少 java.sql 模块,添加后一切顺利,感谢您的支持

标签: sqlite javafx jpackage


【解决方案1】:

要解决这个问题,请确保您已包含所有必需的模块,一旦我添加了我的问题已解决,我就错过了一个 java.sql 模块

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 2021-02-25
    • 2012-01-02
    相关资源
    最近更新 更多