当前位置: 首页 > 知识库问答 >
问题:

JavaFX、jlink/jpackage模块问题-添加库“启动层java.lang.Module.findException初始化期间出错”

白学
2023-03-14

IDE:IntelliJ。第一次尝试使用JavaFX和一些额外的库,以及一个可安装的包-(C/O jlink/jpackage)遵循了OpenJFX对IDE模块化项目的指导,可以让它正常工作。https://openjfx.io/openjfx-docs/

添加库时,我只得到了这个错误:“启动层java.lang.Module.FindException:Module eu.hansolo.medusa not found,required by modulename”

我读过很多关于这个错误的类似文章,但这里没有特别的喜悦。

已尝试在运行配置时将adding添加到VM IE:
--module-path${PATH_TO_FX}:mods/production--add-modules javafx.controls,javafx.fxml,eu.hansolo.medusa-
仍然得到“启动层java.lang.Module.findException:Module eu.hansolo.medusa初始化期间出错”

然而..如果我删除“module-info.java”文件..我可以在IntelliJ中运行应用程序没问题…然而..然后我就不能使用JLink来制作自定义运行时映像。

任何建议或指示我可以做的阅读,将非常感谢和许多预先感谢。

共有1个答案

贺季
2023-03-14

所以问题似乎是您没有将Medusa添加到模块路径中。我是通过使用Maven来完成这一任务的。

我将依赖项添加到pom文件中,并创建了一个模块-info.java,看起来一切都正常了。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <groupId>org.example</groupId>
    <artifactId>MavenFxied</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>14.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics</artifactId>
            <version>14.0.1</version>
        </dependency>
        <dependency>
            <groupId>eu.hansolo</groupId>
            <artifactId>Medusa</artifactId>
            <version>11.5</version>
        </dependency>
    </dependencies>

</project>

模块-info.java

module mavenfxied {
    requires javafx.controls;
    requires eu.hansolo.medusa;
    exports example;
}

我做了一个示例类来测试它。

main.java

package example;

import eu.hansolo.medusa.Gauge;
import eu.hansolo.medusa.GaugeBuilder;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {

    public void start(Stage stage) throws Exception {
        StackPane pane = new StackPane();
        Gauge g = GaugeBuilder.create()
                .skinType(Gauge.SkinType.SPACE_X)
                .animated(true)
                .decimals(0)
                .title("SpaceX")
                .unit("km/h")
                .maxValue(30000)
                .threshold(25000)
                .build();
        pane.getChildren().add(g);
        Scene scene = new Scene(pane);
        stage.setScene(scene);
        stage.show();
    }
}

如果您不使用maven,那么注释中提出的将jar文件添加到module-path上的某个位置可能是唯一的方法。

 类似资料:
  • IDE:Intellij。第一次尝试使用JavaFX,使用一些额外的库和一个可安装的包(C/O jlink/jpackage)遵循了OpenJFX对于IDE中的模块化项目的指导,可以使其正常工作。https://openjfx.io/openjfx-docs/ 添加库时,我只是得到了这个错误:“启动层java.lang.Module.findexception初始化时发生错误:Module eu.

  • 我试图在Intellij 2018.3 IDE中构建示例javaFX应用程序。我已经安装了OracleJDK11,并下载了openjfk11。我创建了一个链接到JavaFXSDK的库,并在VM选项行中添加了一行--module path=${path_to_FX}--add modules=javafx.controls,javafx.fxml。路径_到_FX定义为指向我的javaFX文件夹的环境

  • 为了在Eclips 2020-06的Java Swing中运行JTable,导入了rs2xml.jar文件。但在此之后,当运行程序时,会出现以下错误。 初始化引导层Java.lang.module.FindException时出错:无法派生E:\Progrm Learning\Java\Student\rs2xml.jar的模块描述符,原因是:Java.lang.module.InvalidMod

  • 我使用的是Windows 10系统,安装了Eclipse,我通过cmd运行java项目,但我需要一个IDE,每次尝试运行类文件时,我都会收到以下错误消息: 启动层初始化期间出错 JAVAlang.module。FindException:找不到模块myproject 或者类似的东西。 这是我正在运行的代码: 请帮忙

  • 我是第一次使用Eclipse,我刚刚安装完它,我按照我的在线课程的指示键入了下面的代码: 我得到了下面的错误: 初始化引导层java.lang.module.FindException时出错:读取模块:C:\users\seljouki\eclipse-workspace\MyFirstProject\bin时出错,原因是:java.lang.module.InvalidModuleDescrip

  • 我按照步骤创建了HelloWorld示例,但它没有运行。它给出了以下错误: 初始化引导层java.lang.module.FindException时出错:读取模块:F:\Develop\Eclipse\HelloWorld\bin时出错,原因是:java.lang.module.InvalidModuleDescriptoRexception:HelloWorld.class在顶级目录中找到(模