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
我设法编译,运行 并通过下一步在您的项目中获取文档:
向根添加一个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>
- 使用 mvn clean install 构建
- 运行
javafx:run -f pom.xml
- 为了获得更好的文档,您需要进入任何 javafx 方法的“内部”,您可以通过放置光标并按 Ctrl+B,然后单击“下载源代码”来完成此操作
- 我终于为您的测试存储库创建了一个 PR。我有意推送了一些想法文件,这应该可以减少您遇到的错误数量。
如果您处于无法使用 Maven 或 Gradle 等任何构建工具的特殊情况,最近有人向我展示了一个解决方法:
- 转到项目结构 > 全局库
- 添加图书馆
- 确保取消选中 下载到 或 select 与 lib/
不同的目录
- 检查sources和/或javadoc(取决于您的需要)
这样项目可以像以前一样 运行,但 IntelliJ 可以向您显示导入库的文档甚至源代码,而不会在构建和执行应用程序时发生任何冲突。
IntelliJ 现在将列为一个问题,项目本身中的库不再需要(因为它现在实际上是重复的)。但是,这不是问题,因为 lib 目录仍将用于通过 运行 配置执行项目。
我在为 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
我设法编译,运行 并通过下一步在您的项目中获取文档:
向根添加一个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>
- 使用 mvn clean install 构建
- 运行
javafx:run -f pom.xml
- 为了获得更好的文档,您需要进入任何 javafx 方法的“内部”,您可以通过放置光标并按 Ctrl+B,然后单击“下载源代码”来完成此操作
- 我终于为您的测试存储库创建了一个 PR。我有意推送了一些想法文件,这应该可以减少您遇到的错误数量。
如果您处于无法使用 Maven 或 Gradle 等任何构建工具的特殊情况,最近有人向我展示了一个解决方法:
- 转到项目结构 > 全局库
- 添加图书馆
- 确保取消选中 下载到 或 select 与 lib/ 不同的目录
- 检查sources和/或javadoc(取决于您的需要)
这样项目可以像以前一样 运行,但 IntelliJ 可以向您显示导入库的文档甚至源代码,而不会在构建和执行应用程序时发生任何冲突。
IntelliJ 现在将列为一个问题,项目本身中的库不再需要(因为它现在实际上是重复的)。但是,这不是问题,因为 lib 目录仍将用于通过 运行 配置执行项目。