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