IntelliJ - JavaFX 和 JavaDoc:模块的两个版本

IntelliJ - JavaFX and JavaDoc: Two versions of module

我在为 JavaFX 项目设置 IntelliJ 时遇到了一些困难。 我使用 File > Project Structure > Libraries > Add new library > From Maven searching for org.openjfx:javafx-fxml:11.0.2 来设置它。所以它被发现了,我特意检查了 下载 JavaDocs 因为这很有用。

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

java.lang.module.FindException: Two versions of module javafx.graphics found in lib (javafx-graphics-11.0.2-linux.jar and javafx-graphics-11.0.2-javadoc.jar)

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

当我删除为 JavaFX 下载的 *javadoc.jar 文件时,程序启动得很好。 正如您所想象的,我希望在 IDE.

中保留直接阅读 JavaDoc 的可能性

有什么解决办法吗?

编辑: 这是 Github 上的示例存储库: leun4m/javafx-demo@2a7a03a

运行 配置:

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

我设法编译,运行 并通过下一步在您的项目中获取文档:

  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。我有意推送了一些想法文件,这应该可以减少您遇到的错误数量。

如果您处于无法使用 Maven 或 Gradle 等任何构建工具的特殊情况,最近有人向我展示了一个解决方法:

  1. 转到项目结构 > 全局库
  2. 添加图书馆
    • 确保取消选中 下载到 或 select 与 lib/
    • 不同的目录
    • 检查sources和/或javadoc(取决于您的需要)

这样项目可以像以前一样 运行,但 IntelliJ 可以向您显示导入库的文档甚至源代码,而不会在构建和执行应用程序时发生任何冲突。

IntelliJ 现在将列为一个问题,项目本身中的库不再需要(因为它现在实际上是重复的)。但是,这不是问题,因为 lib 目录仍将用于通过 运行 配置执行项目。