maven java.lang.module.FindException:模块javafx.controls未找到

cczfrluj  于 2023-10-17  发布在  Maven
关注(0)|答案(2)|浏览(195)

I'm trying to run a JavaFX application in IntelliJ. Environment - Ubuntu 18.04. Java - 11.
But it gives me error saying :

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found

Whole command in the run-console :
/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java --module-path /home/mua/Software/javafx_sdk-1_3_1-b05a-linux-i586/javafx-sdk1.3/lib --add-modules=javafx.controls,javafx.fxml -Djava.library.path=/home/mua/Software/javafx_sdk-1_3_1-b05a-linux-i586/javafx-sdk1.3/lib -javaagent:/home/mua/Software/ideaIU-2020.3.1/idea-IU-203.6682.168/lib/idea_rt.jar=41593:/home/mua/Software/ideaIU-2020.3.1/idea-IU-203.6682.168/bin -Dfile.encoding=UTF-8 -classpath /home/mua/Desktop/PhotoSlide/PhotoSlide/target/classes:/home/mua/.m2/repository/org/openjfx/javafx-base/16-ea+7/javafx-base-16-ea+7.jar:/home/mua/.m2/repository/org/openjfx/javafx-base/16-ea+7/javafx-base-16-ea+7-linux.jar:/home/mua/.m2/repository/org/openjfx/javafx-fxml/16-ea+7/javafx-fxml-16-ea+7.jar:/home/mua/.m2/repository/org/openjfx/javafx-fxml/16-ea+7/javafx-fxml-16-ea+7-linux.jar:/home/mua/.m2/repository/org/openjfx/javafx-graphics/16-ea+7/javafx-graphics-16-ea+7.jar:/home/mua/.m2/repository/org/openjfx/javafx-graphics/16-ea+7/javafx-graphics-16-ea+7-linux.jar:/home/mua/.m2/repository/org/openjfx/javafx-media/16-ea+7/javafx-media-16-ea+7.jar:/home/mua/.m2/repository/org/openjfx/javafx-media/16-ea+7/javafx-media-16-ea+7-linux.jar:/home/mua/.m2/repository/org/openjfx/javafx-controls/16-ea+7/javafx-controls-16-ea+7.jar:/home/mua/.m2/repository/org/openjfx/javafx-controls/16-ea+7/javafx-controls-16-ea+7-linux.jar:/home/mua/.m2/repository/org/openjfx/javafx-swing/16-ea+7/javafx-swing-16-ea+7.jar:/home/mua/.m2/repository/org/openjfx/javafx-swing/16-ea+7/javafx-swing-16-ea+7-linux.jar:/home/mua/.m2/repository/org/controlsfx/controlsfx/11.0.2/controlsfx-11.0.2.jar:/home/mua/.m2/repository/org/kordamp/ikonli/ikonli-core/12.1.0/ikonli-core-12.1.0.jar:/home/mua/.m2/repository/org/kordamp/ikonli/ikonli-javafx/12.1.0/ikonli-javafx-12.1.0.jar:/home/mua/.m2/repository/org/kordamp/ikonli/ikonli-themify-pack/12.1.0/ikonli-themify-pack-12.1.0.jar:/home/mua/.m2/repository/org/kordamp/ikonli/ikonli-fontawesome-pack/12.1.0/ikonli-fontawesome-pack-12.1.0.jar:/home/mua/.m2/repository/com/github/dragon66/icafe/1.1-SNAPSHOT/icafe-1.1-20190902.150913-102.jar:/home/mua/.m2/repository/com/github/jai-imageio/jai-imageio-core/1.4.0/jai-imageio-core-1.4.0.jar:/home/mua/.m2/repository/com/twelvemonkeys/imageio/imageio-core/3.6/imageio-core-3.6.jar:/home/mua/.m2/repository/com/twelvemonkeys/common/common-lang/3.6/common-lang-3.6.jar:/home/mua/.m2/repository/com/twelvemonkeys/common/common-io/3.6/common-io-3.6.jar:/home/mua/.m2/repository/com/twelvemonkeys/common/common-image/3.6/common-image-3.6.jar:/home/mua/.m2/repository/com/twelvemonkeys/imageio/imageio-tiff/3.6/imageio-tiff-3.6.jar:/home/mua/.m2/repository/com/twelvemonkeys/imageio/imageio-psd/3.6/imageio-psd-3.6.jar:/home/mua/.m2/repository/com/twelvemonkeys/imageio/imageio-metadata/3.6/imageio-metadata-3.6.jar:/home/mua/.m2/repository/org/slf4j/slf4j-simple/2.0.0-alpha1/slf4j-simple-2.0.0-alpha1.jar:/home/mua/.m2/repository/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.jar:/home/mua/.m2/repository/com/h2database/h2/1.4.200/h2-1.4.200.jar:/home/mua/.m2/repository/org/ejml/ejml-simple/0.40/ejml-simple-0.40.jar:/home/mua/.m2/repository/org/ejml/ejml-core/0.40/ejml-core-0.40.jar:/home/mua/.m2/repository/javax/media/jai/com.springsource.javax.media.jai.core/1.1.3/com.springsource.javax.media.jai.core-1.1.3.jar:/home/mua/.m2/repository/org/projectlombok/lombok/1.18.16/lombok-1.18.16.jar:/home/mua/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.12.0/jackson-databind-2.12.0.jar:/home/mua/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.12.0/jackson-annotations-2.12.0.jar:/home/mua/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.12.0/jackson-core-2.12.0.jar org.photoslide.App
And I've added the VM with :

--module-path /home/mua/Software/javafx_sdk-1_3_1-b05a-linux-i586/javafx-sdk1.3/lib --add-modules=javafx.controls,javafx.fxml

And added libraries too :

Source code : https://github.com/maifeeulasad/PhotoSlide
Java configurations :

>>java --version
openjdk 11.0.10 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)
>>javac --version
javac 11.0.10
vlju58qv

vlju58qv1#

据我所知,你正在使用Non-modular with Maven
我自己按照上面链接中提供的说明从头开始构建了一个,并注意到用黄色标记的图片。
有两个环境变量需要为OpenJDK设置。一个在你的系统(例如,./bashrc文件)和一个在IntelliJ for Maven中(如果您使用Java 11或更高版本,在这种情况下)。
根据你的帖子,我知道你的系统中有一个,但它没有提到这张照片中的一个,所以一定要这样做。
另外,请注意,我没有设置任何VM选项!
上面的链接指出:
JavaFX类将被识别。还请注意,Maven管理所需的依赖项:它将添加javafx.controlsjavafx.fxml所需的javafx.basejavafx.graphics,但最重要的是,它将根据您的平台添加所需的分类器,下载特定的平台jar。

这是我的pom.xml文件(在制作项目时由IntelliJ自动生成):

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.company</groupId>
    <artifactId>testing_maven</artifactId>
    <version>1.0</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11.0.2</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.4</version>
                <configuration>
                    <mainClass>com.company.App</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

我强烈建议查看我发布的链接。你可能漏掉了什么。如果没有,那么一定要尝试创建一个新的测试项目,按照说明,看看它是否工作。如果是这样的话,把它和你现在的项目进行比较。
抱歉,我帮不上什么忙。我不和玛文一起工作

g0czyy6m

g0czyy6m2#

在IntelliJ IDEA中,如果你想创建一个maven项目,它将在1.8之后的java版本中使用javaFx库,你必须:

  • choose new project -> choose as build system:Maven

  • pom.xmm文件必须至少包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>

4.0.0

<groupId>com.app</groupId>
 <artifactId>machines</artifactId>
 <version>1.0-SNAPSHOT</version>

 <properties>
     <maven.compiler.source>19</maven.compiler.source>
     <maven.compiler.target>19</maven.compiler.target>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <javafx.version>19</javafx.version>
     <javafx.maven.plugin.version>0.0.8</javafx.maven.plugin.version>
 </properties>

 <dependencies>
     <dependency>
         <groupId>org.openjfx</groupId>
         <artifactId>javafx-controls</artifactId>
         <version>${javafx.version}</version>
     </dependency>

     <dependency>
         <groupId>org.openjfx</groupId>
         <artifactId>javafx-fxml</artifactId>
         <version>${javafx.version}</version>
     </dependency>

 </dependencies>
 <build>
     <plugins>
         <plugin>
                 <groupId>org.openjfx</groupId>
                 <artifactId>javafx-maven-plugin</artifactId>
                 <version>${javafx.maven.plugin.version}</version>
             <configuration>
                 <mainClass>
                     com.insa.projet_info.projet_ge2_2023.Main
                 </mainClass>
             </configuration>
         </plugin>
     </plugins>
 </build>
  • 现在,导致javafx库遗漏错误的最大错误是人们倾向于从Run -> Main运行maven应用程序(没有maven)**我认为在IntelliJ IDEA中,Maven项目应该配置为“Maven Projects "并作为“Maven Projects”运行。

要运行一个Maven目标,比如“javafx:run”,您确实需要访问右侧的“Maven”选项卡。这将打开IDE右侧的Maven工具窗口。在“Maven”工具窗口中,您可以**展开您的项目以查看“插件”和“插件”下的所有可用目标。要运行“javafx:run”,您应该展开您的项目,转到“插件”,然后找到“javafx "。

**右键单击“javafx:run”并选择“Run 'javafx:run'"。**这将使用适当的Maven配置执行JavaFX应用程序。

您还可以为特定的Maven目标**配置快捷方式,包括您提到的“javafx:run”。这可以通过右键单击目标并选择第二选择来完成:“'someName [javafx:run'."**创建后,您可以使用快捷方式(例如,Shift + F10)在将来运行它。

在成功运行“javafx:run”之后,您应该看到没有错误的JavaFX应用程序窗口,前提是您的项目和配置设置正确。

相关问题