Intellij idea JavaFX、JLink/JPackage模块问题-添加库”;初始化启动层java.lang.module.FindException时出错;

Intellij idea JavaFX、JLink/JPackage模块问题-添加库”;初始化启动层java.lang.module.FindException时出错;,intellij-idea,javafx,jlink,jpackage,Intellij Idea,Javafx,Jlink,Jpackage,IDE:IntelliJ。 首次尝试将JavaFX与一些附加库以及可安装的包一起使用-(c/o JLink/JPackage) 我们已经按照OpenJFX的指示从IDE中开发了一个模块化项目,并且可以毫无问题地实现它。 正在添加库,但我刚刚遇到以下错误: “启动层初始化期间出错 java.lang.module.FindException:找不到模块eu.hansolo.medusa,ModuleName所需” 我已经读过很多关于这个错误的类似文章,但是这里没有特别的乐趣 已尝试添加到VM运行

IDE:IntelliJ。 首次尝试将JavaFX与一些附加库以及可安装的包一起使用-(c/o JLink/JPackage) 我们已经按照OpenJFX的指示从IDE中开发了一个模块化项目,并且可以毫无问题地实现它。

正在添加库,但我刚刚遇到以下错误: “启动层初始化期间出错 java.lang.module.FindException:找不到模块eu.hansolo.medusa,ModuleName所需”

我已经读过很多关于这个错误的类似文章,但是这里没有特别的乐趣

已尝试添加到VM运行时配置ie:
--模块路径 ${PATH_TO_FX}:mods/production --添加模块 javafx.controls、javafx.fxml、eu.hansolo.medusa-
在启动层初始化过程中发生“仍在获取”错误 java.lang.module.FindException:未找到模块eu.hansolo.medusa“

然而。。如果我删除“module info.java”文件..我可以在IntelliJ中运行应用程序,没有问题。。然而。。然后,我无法使用JLink创建自定义运行时映像


如果您有任何关于阅读的建议或建议,我将不胜感激。

因此,问题似乎是您没有将美杜莎添加到模块路径中。我实现这一点的方法是使用maven

我将依赖项添加到pom文件中,并创建了一个module-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>
我制作了一个示例类来测试它

Main.java

module mavenfxied {
    requires javafx.controls;
    requires eu.hansolo.medusa;
    exports example;
}
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文件添加到模块路径上某个位置的注释中提出的解决方案可能是唯一的方法。

Heya Matt感谢您的响应-模块将正常运行,然后我可以使用JPackage创建自定义运行时和安装程序。一旦我添加了美杜莎图书馆。。它找不到的。。我在module-info.java ie中添加了Medusa:module-hitSongDNA{requires javafx.controls;requires javafx.fxml;requires eu.hansolo.Medusa;open org.openjfx to javafx.fxml;exports org.openjfx;}-但在运行时找不到它我还是有点困惑。尝试在intellij中运行项目时是否发生错误?你是如何将美杜莎图书馆添加到你的项目中的?在您的vm参数选项
--模块路径${path_TO_FX}:mods/production
中,mods/production是否包含Medusa jmod文件?是的,当我尝试在intelliJ中运行时发生错误。我使用项目结构->库->从maven将Medusa添加为来自maven repo的jar文件。Ok mods/production不包括美杜莎jmod文件。。表示我遗漏了一些东西。。我使用的是来自的指南,所以JMods的包含是从那里来的,有些东西我不确定。谢谢!版本为2020.1.1终极版。。我上个月才开始用它。。我爱死它了。在此之前,NetBeans.Matt只是将Medusa Jar文件拖到mods/production中,现在在InteliJ中运行时,以及在使用JPackage生成可安装文件时,都可以使用它。也许这不是管理图书馆最优雅的方式?但这很有效,非常感谢你的投入。为此干杯,马特。。我没有使用Maven,但可以。