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

javafx.controls无法解析为module-info.java中的模块

甄华清
2023-03-14

我正在学习JavaFx并尝试制作一个可重用的组件。该项目正在VSCode中开发。该项目非常简单,涉及启动器和可重用组件。我正在重构,当添加模块时,一切都停止了工作,我无法继续重构。

module-info中显示的错误是:< code>javafx.controls无法解析为模块。虽然很奇怪,但是如果我告诉Maven更新项目,在一些罕见的情况下,错误会告诉我模块是空的或者不存在。

源代码(实验分支): https://github.com/Osolemio44/text-area-right 这是项目的结构:

C:\WORKSPACE\TEXT-AREA-RIGHT
├───.vscode
├───src
│   └───main
│       ├───java
│       │   └───com
│       │       └───adeso
│       │           ├───custom
│       │           └───launcher
│       └───resources
│           └───com
│               └───adeso
└───target

启动器的模块信息:

module com.adeso.launcher {

    requires transitive javafx.controls;
    requires javafx.fxml;

    opens com.adeso.launcher to javafx.fxml;

    exports com.adeso.launcher;
}

组件的模块信息:

module com.adeso.custom {

    requires transitive javafx.controls;
    requires javafx.fxml;

    opens com.adeso.custom to javafx.fxml;

    // exports com.adeso.custom;
}

庞.xml

<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.adeso</groupId>
    <artifactId>text-area-right</artifactId>
    <version>0.0.1</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>17.0.2</maven.compiler.source>
        <maven.compiler.target>17.0.2</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>17.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>17.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <!--  ============================================
              ============================================
              =                 PLUGINS                  =  
              ============================================
              ============================================  -->


        <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.8</version>
                <executions>
                    <execution>
                        <!-- Default configuration for running -->
                        <!-- Usage: mvn clean javafx:run -->
                        <id>default-cli</id>
                        <configuration>
                            <mainClass>com.adeso.launcher.App</mainClass>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--  +++++++++++++++++++++++++
                  +          JUNIT        +
                  +++++++++++++++++++++++++ -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M7</version>
            </plugin>
        </plugins>
    </build>
</project>

共有1个答案

吴鸿彩
2023-03-14

在检查了宝石海的所有信息后,我改变了我的项目结构,现在它似乎可以工作了。我切换到一个 Maven 模块项目,并在每个 maven 模块中创建了 1 个模块信息.java。

C:\WORKSPACE\TEXT-AREA-RIGHT
├───.vscode
├───launchermodule
│   └───src
│       └───main
│           ├───java
│           │   └───com
│           │       └───adeso
│           │           └───custom
│           └───resources
│               └───com
│                   └───adeso
│                       └───custom
└───nodemodule
    └───src
        ├───main
        │   ├───java
        │   │   └───com
        │   │       └───adeso
        │   │           └───custom
        │   └───resources
        │       └───com
        │           └───adeso
        │               └───custom
        └───test
            └───java
                └───com
 类似资料:
  • 因此,当我试图通过另一个类MainFX运行gui时,我遇到了一些错误(我将尝试解决这些错误,但这并不是这个问题的意义所在): 正是在这一点上,我尝试添加一个module-info.java,并解决了IntelliJ捕获的所有导入依赖项,添加了一些模块依赖项: 所以我的module-info.java不能编译,如果没有module-info.java文件,我就不能运行JavaFX,这可能在没有mod

  • 非常简单的用例,我使用的是EclipseOxygen4.7。3a,包括来自Java9的支持。我有两个项目是Java 9项目: 我想在中使用类,因此我尝试将第二个模块导入第一个项目。 模块信息。java项目1: 模块信息。java项目2: Eclipse给了我错误: 项目二不能解析为模块 我是否必须将所有Java项目集中在一个“主项目”下,以便让Eclipse知道所有这些模块在其中都是可用的?还是我

  • 我刚开始使用Java16,似乎不明白为什么我不能访问资源文件。我进行了一些故障排除,以缩小范围,至少在我似乎有问题的地方。 我正在使用IntelliJ IDEA 2021.2构建#IU-212.4746.92 我创建了一个新项目,我选择了带有OpenJDK 16的JavaFX。 然后,它用三个主文件创建项目,一个应用程序类、一个控制器类和一个FXML文件。创建项目后,我进入POM文件,选择了Jav

  • 简介 Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式。 首先我们来看看Module模式的基本特征: 模块化,可重用 封装了变量和function,和全局的namaspace不接触,松耦合 只暴露可用public的方法,其它私有方法全部隐藏 关于Module模式,最早是由YUI的成员Eric Miraglia在

  • 我终于要从Eclipse迁移到Android Studio,连一个小模块都连不上了。 这里是参考资料中唯一的文件--正如您可以通过屏幕截图看到的,这里没有错误 但在需要它的类中,r'没有解析。所以我很困惑--没有太多东西要查