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

问题描述

为JavaFX项目设置IntelliJ时,我有些费劲。 我使用文件>项目结构>库>添加新库>从Maven 进行设置,以搜索--module-path lib --add-modules javafx.controls,javafx.fxml 。因此找到了它,我特意选中了下载JavaDocs ,因为这样做很有用。

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

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

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

当我随后删除为JavaFX下载的* javadoc.jar文件时,该程序就可以正常启动了。 如您所料,我想保留在IDE中直接读取JavaDoc的可能性。

有什么解决办法吗?

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

运行配置:

{{1}}

解决方法

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

  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全新安装进行构建
  2. 运行javafx:run -f pom.xml
  3. 要获得更好的文档,您需要“加入”任何javafx方法,您可以通过将光标置于Ctrl + B并单击“下载源代码”来实现此目的。
  4. 最后,我已经为您的测试库创建了PR。我特意推送了一些想法文件,这应该减少您得到的错误数量。
,

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

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...