当前位置: 首页 > 知识库问答 >
问题:

IntelliJ+Gradle+JavaFX构建,但未运行

樊琦
2023-03-14

我试图在Windows上用IntelliJ IDEA Ultimate中的JavaFX运行Gradle项目。JavaFX是在我们最新的Git push中添加的,在它开始工作之前。

  • JDK 11.0.5(来自Oracle站点,不是openJDK),我使用的是Java11,都在IntelliJ中配置
  • JDK安装目录(特别是/bin目录)添加到我的路径
  • JDK安装目录中添加的java_home环境变量

Build.Gradle(它不是由我建造的,我不明白那里写的到底是什么,为什么):

plugins {
    id 'java'
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.8'
}

group 'transportCompany'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'org.mongodb:mongodb-driver-sync:3.11.2'
    compile group: 'org.openjfx', name: 'javafx', version: '11.0.2', ext: 'pom'
}

javafx {
    version = "11.0.2"
    modules = [ 'javafx.controls', 'html" target="_blank">javafx.fxml' ]
}
public class TransportCompanyApp extends Application {

    private Stage primaryStage;
    private MainAppPresenter presenter;

    @Override
    public void start(Stage primaryStage) {

        this.primaryStage = primaryStage;
        this.primaryStage.setTitle("My first JavaFX app");
        presenter = new MainAppPresenter(primaryStage);
        this.presenter.initRootLayout();
        //this.primaryStage.show();

    }

    public static void main(String[] args) {
        launch(args);
    }
}

我尝试用Git签出创建新项目,但没有成功。奇怪的是,它适用于我的同事(他们有相同的设置:JDK11、Java11、Windows;有些甚至根本没有JAVA_HOME,它适用于他们)。

我所尝试的:

  • JavaFX入门
  • 错误:缺少JavaFX运行时组件,并且需要使用JDK 11运行此应用程序
  • 错误:JavaFX运行时组件丢失-JavaFX 11和OpenJDK 11和Eclipse IDE
  • https://intellij-support.jetbrains.com/hc/en-us/community/posts/3600909940-openJFX-11
  • https://openjfx-dev.openjdk.java.narkive.com/afiw9uqi/error-javafx-runtime-components-are-missing-and-are-required-to-run-this-application
  • 使用JDK 13和Java 13
  • 将项目更改为模块化
  • 使用JavaFX作为全局库并将其导入模块
> Task :run FAILED
Task ':run' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Starting process 'command 'C:\Program Files\Java\jdk-11.0.5\bin\java.exe''. Working directory:
C:\Users\Lenovo\Desktop\TO Command: C:\Program Files\Java\jdk-11.0.5\bin\java.exe --add-modules
 javafx.controls,javafx.fxml --module-path C:\Users\Lenovo\.gradle\caches\modules-2\files-2.1\o
rg.openjfx\javafx-fxml\11.0.2\b3242e4c031558574de2a1da685bb5fcdbb8a530\javafx-fxml-11.0.2-win.j
ar;C:\Users\Lenovo\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-controls\11.0.2\6c7637
07769c18adce406904c771c2ad1fcc370b\javafx-controls-11.0.2-win.jar;C:\Users\Lenovo\.gradle\cache
s\modules-2\files-2.1\org.openjfx\javafx-graphics\11.0.2\20459ea2cf714942bcbeb78a7f70ba3531dc1a
44\javafx-graphics-11.0.2-win.jar;C:\Users\Lenovo\.gradle\caches\modules-2\files-2.1\org.openjf
x\javafx-base\11.0.2\1852e57b8cf9a9b6488c33605bccd5d06ff210e1\javafx-base-11.0.2-win.jar -Dfile
.encoding=windows-1250 -Duser.country=PL -Duser.language=pl -Duser.variant -cp C:\Users\Lenovo\
Desktop\TO\build\classes\java\main;C:\Users\Lenovo\Desktop\TO\build\resources\main;C:\Users\Len
ovo\.gradle\caches\modules-2\files-2.1\org.mongodb\mongodb-driver-sync\3.11.2\a011ecee75c110e95
d33ece066f4bee149d5487a\mongodb-driver-sync-3.11.2.jar;C:\Users\Lenovo\.gradle\caches\modules-2
\files-2.1\org.openjfx\javafx\11.0.2\6e90384c9fb4ec7ed8186c0e916c419c87a24cbf\javafx-11.0.2.pom
;C:\Users\Lenovo\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-fxml\11.0.2\b3242e4c0315
58574de2a1da685bb5fcdbb8a530\javafx-fxml-11.0.2-win.jar;C:\Users\Lenovo\.gradle\caches\modules-
2\files-2.1\org.openjfx\javafx-controls\11.0.2\6c763707769c18adce406904c771c2ad1fcc370b\javafx-
controls-11.0.2-win.jar;C:\Users\Lenovo\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-c
ontrols\11.0.2\4ab633cf1eea60f76e2ae9905aedac862da88b08\javafx-controls-11.0.2.jar;C:\Users\Len
ovo\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-graphics\11.0.2\20459ea2cf714942bcbeb
78a7f70ba3531dc1a44\javafx-graphics-11.0.2-win.jar;C:\Users\Lenovo\.gradle\caches\modules-2\fil
es-2.1\org.openjfx\javafx-graphics\11.0.2\e522eb4ea422eceeee207b1c266ba3db19b2343a\javafx-graph
ics-11.0.2.jar;C:\Users\Lenovo\.gradle\caches\modules-2\files-2.1\org.openjfx\javafx-base\11.0.
2\1852e57b8cf9a9b6488c33605bccd5d06ff210e1\javafx-base-11.0.2-win.jar;C:\Users\Lenovo\.gradle\c
aches\modules-2\files-2.1\org.openjfx\javafx-base\11.0.2\7fb2e4a8528ec9e434a9ac9ee98b39af79e6dc
b8\javafx-base-11.0.2.jar;C:\Users\Lenovo\.gradle\caches\modules-2\files-2.1\org.mongodb\mongod
b-driver-core\3.11.2\798e2d948326c5bfd9924e524bab22ee39c8f4f\mongodb-driver-core-3.11.2.jar;C:\
Users\Lenovo\.gradle\caches\modules-2\files-2.1\org.mongodb\bson\3.11.2\96b17202f1250736ba83021
ff56550e83e8fd8c5\bson-3.11.2.jar TransportCompanyApp
Successfully started process 'command 'C:\Program Files\Java\jdk-11.0.5\bin\java.exe''
Error: Could not find or load main class TransportCompanyApp
Caused by: java.lang.ClassNotFoundException: TransportCompanyApp
:run (Thread[Daemon worker,5,main]) completed. Took 0.367 secs.

FAILURE: Build failed with an exception.

共有1个答案

鲁烨
2023-03-14

问题解决了。我所做的:

  1. 删除编译组:'org.openjfx',名称:'javafx',版本:'11.0.2',ext:'pom'作为gradle.build.
  2. 的依赖项
  3. gradle.build中的MainClassName更改为MainClassName=“app.transportCompanyApp”.
  4. 更改IntelliJ中的运行选项,以使用gradle Run.
 类似资料:
  • 主要内容:执行多个任务,排除任务,发生故障时继续构建,选择执行哪些构建,获取构建信息Gradle提供了一个命令行来执行构建脚本。 它可以一次执行多个任务。在这里将介绍如何使用不同的选项来执行多个任务。 执行多个任务 可以从单个构建文件执行多个任务。使用命令处理构建文件。此命令将按列出的顺序编译每个任务,并使用不同的选项执行每个任务以及依赖关系。 示例 - 假设有四个任务 - ,,和。和取决于和。 看看下面的图表。 在上面的四个任务是相互依赖的,用一个箭头符号表示。 看看下面的代码

  • 问题内容: 我已使用内置的Gradle支持在IntelliJ(2019.2)中设置了OpenJDK 12项目。为了设计使用JavaFX 12的GUI,我已经阅读并阅读了多次安装指南,在IDE中运行程序没有问题,问题是当我尝试构建要运行的发行版的.jar文件时陷入问题。到目前为止,我还没有找到一个可行的解决方案,而我搜索了很多QUITE,几乎为此扯掉了头发。当前,当我尝试使用java -jar“ j

  • 我试着把我的主类移到一个不扩展Application的单独的类中,这就是导致上述错误的原因。如果不移动我的主类,我会得到一个不同的错误。 My Build.Gradle当前看起来如下所示: 如果我让我的main方法扩展应用程序,那么我会得到一个错误,说明找不到我的main类,尽管我可以看到它存在于生成的.jar文件中。 编辑 我试过指南的模块化部分。这样做,我有超过100个错误时,试图建立。它们都

  • 我使用gradle jar命令构建项目,然后尝试使用java-jar myproject.jar命令启动应用程序 我的建筑。加德尔:

  • 问题内容: 我正在尝试使用Gradle构建相对简单的JavaFX应用程序。但是,我不知道该怎么做。 我是Gradle的新手,对于简单的(非javafx)项目,我已经成功使用了插件,并构建和打包了库和命令行应用程序。 但是,关于JavaFX,我完全陷入困境。我已经阅读了这篇文章,该文章建议使用该插件,但是我只能找到该插件的源代码,但是没有关于如何实际使用它的文档(在文章中,他们只是从远程URL应用它

  • 我试图使用Gradle构建一个相对简单的JavaFX应用程序。但是,我完全不知道该怎么做。 我对Gradle比较陌生,对于简单的(非JavaFX)项目,我已经成功地使用了插件和来构建和打包库和命令行应用程序。 然而,当涉及到JavaFX时,我完全被卡住了。我读过这篇文章,其中建议使用插件,但是我只能找到这个插件的源代码,而没有关于如何实际获取它和使用它的文档(在文章中,他们只是从远程URL应用它,