【问题标题】:IntelliJ - JavaFX and JavaDoc: Two versions of moduleIntelliJ - JavaFX 和 JavaDoc:两个版本的模块
【发布时间】:2021-01-03 02:15:18
【问题描述】:

我在为 JavaFX 项目设置 IntelliJ 时遇到了一些困难。 我使用 File > Project Structure > Libraries > Add new library > From Maven 搜索org.openjfx:javafx-fxml:11.0.2 进行设置。所以找到了,我特意检查了Download 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

【问题讨论】:

  • 是否可以分享项目示例以供调查?
  • 查看编辑...
  • 您不需要 javadoc JAR,因为 Intellij 可以从源代码生成并显示 javadoc
  • 但是即使我替换 Download JavaDoc > Download Sources 它仍然会说同样的话,它会找到两个版本 *-linux.jar 和 * -sources.jar
  • 我不是 IntelliJ 专家,但我想说 javadoc.jar 文件的正确位置不在 lib 中。

标签: java intellij-idea javafx javadoc


【解决方案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 clean install 构建
  2. javafx:run -f pom.xml 一起运行
  3. 要获得更好的文档,您需要“进入”任何 javafx 方法,您可以通过放置光标并按 Ctrl+B,然后单击“下载源”
  4. 最后,我为您的测试存储库创建了一个 PR。我特意推送了一些想法文件,这应该可以减少您遇到的错误。

【讨论】:

  • 好吧,老实说,我希望有一个不需要将其变成 maven 项目的解决方案。但是,我没有在我的问题中说明,这个答案显示了很好的努力,似乎没有更好的选择......
  • @leun4m 好吧,我不知道你的限制,但我更喜欢 maven。通过这种方式,您可以更好地了解环境中正在发生的事情。 lib 或属性从哪里来,等等...如果你真的不能使用它,我建议你玩 File->ProjectStructure->Libraries。我没有成功,也许你有更多的运气。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2016-06-12
    • 2018-12-10
    • 1970-01-01
    • 2014-11-05
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多