【问题标题】:NoClassDefFoundError|ClassNotFoundException in jpackaged executablejpackaged 可执行文件中的 NoClassDefFoundError|ClassNotFoundException
【发布时间】:2023-01-07 23:14:26
【问题描述】:

我已经在 Linux 上的 Netbeans 上使用 jpackage 成功创建了我的 JavaFX maven 项目的可执行文件:

./jpackage --input ~/Documents/NetBeans/MyFX/target/ --dest ~/Documents/NetBeans/MyFX/ --name "MyFX" --main-jar MyFX-2.0.jar --main-class my.myfx.App --icon ~/Documents/NetBeans/MyFX/mypic.png --add-modules javafx.controls,javafx.fxml

该程序安装正常,但在从终端运行时,会出现以下错误:(为了相关性而将其修剪)

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml@19/javafx.fxml.FXMLLoader$MethodHandler.invoke(Unknown Source)
    at javafx.fxml@19/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(Unknown Source)
.
.
.
Caused by: java.lang.NoClassDefFoundError: java/sql/DriverManager
    at my.myfx.DB.init(DB.java:22)
    ... 50 more
Caused by: java.lang.ClassNotFoundException: java.sql.DriverManager
    ... 57 more

有问题的行是:

java.sql.Conection conn;
String fileName="a.db";
**conn=java.sql.DriverManager.getConnection("jdbc:sqlite:"+fileName);**

这是module-info

module my.myfx {
    requires javafx.controls;
    requires javafx.fxml;
    requires java.logging;
    requires java.base;
    requires java.sql;
    requires org.apache.poi.poi;
    requires org.apache.poi.ooxml;
    requires jarchivelib;

    opens my.myfx to javafx.fxml;
    exports my.myfx;
}

POM夹杂物

javafx-controls
javafx-fxml
maven-jar-plugin
maven-dependency-plugin
javafx-maven-plugin

【问题讨论】:

    标签: javafx jpackage


    【解决方案1】:

    --add-modules 列表中似乎缺少 java.sql。可能缺少更多模块。我不确定 jpackage 是否从 module-info.java 中提取了任何东西

    与其手动执行此操作,不如遵循本教程:https://github.com/dlemmermann/JPackageScriptFX

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-26
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2011-05-29
      • 2019-09-05
      相关资源
      最近更新 更多