首页 > 解决方案 > IntelliJ - JavaFX 和 JavaDoc:两个版本的模块

问题描述

我在为 JavaFX 项目设置 IntelliJ 时遇到了一些困难。我使用文件 > 项目结构 > 库 > 添加新库 > 从 Maven搜索org.openjfx:javafx-fxml:11.0.2. 所以它被发现了,我特意检查了下载 JavaDocs,因为这很有用。

但是,当我尝试启动项目时,出现以下错误:

java.lang.module.FindException:在 lib 中找到模块 javafx.graphics 的两个版本(javafx-graphics-11.0.2-linux.jar 和 javafx-graphics-11.0.2-javadoc.jar)

显然,编译器将 javadoc 误认为另一个版本......

然后,当我删除为 JavaFX 下载的 *javadoc.jar 文件时,程序启动得很好。您可以想象,我想保留在我的 IDE 中直接读取 JavaDoc 的可能性。

任何想法如何解决这个问题?

编辑: 这是 Github 上的一个示例 repo: leun4m/javafx-demo@2a7a03a

运行配置:

--module-path lib --add-modules javafx.controls,javafx.fxml

标签: javaintellij-ideajavafxjavadoc

解决方案


我设法通过以下操作在您的项目中编译、运行和获取文档:

  1. 将 pom.xml 添加到根目录:

4.0.0

<groupId>org.example</groupId>
<artifactId>java-fx-pom</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <java.version>1.13</java.version>
    <maven.compiler.source>13</maven.compiler.source>
    <maven.compiler.target>13</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</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.1</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.3</version>
            <configuration>
                <mainClass>Main</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>
  1. 使用 mvn clean install 构建
  2. 与运行javafx:run -f pom.xml
  3. 要获得更好的文档,您需要“进入”任何 javafx 方法,您可以通过放置光标并按 Ctrl+B,然后单击“下载源”
  4. 最后,我为您的测试存储库创建了一个 PR。我故意推送了一些想法文件,这应该会减少你得到的错误数量。

推荐阅读