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

在eclipse中使用gradle项目运行一个简单的javafx应用程序

翁钧
2023-03-14

我是Eclipse java、Gradle和JavaFX新手。最近我正在尝试用gradle Project编写一个javafx应用程序。以下是我想提供的各种细节。

Javafx SDK版本和位置

Scene Builder版本和位置

ui.fxml:

> <?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>


<AnchorPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.171">
   <children>
      <Button fx:id="button1" layoutX="-317.0" layoutY="-145.0" mnemonicParsing="false" onAction="#buttonPressed" text="Hit me" />
      <Label fx:id="label1" layoutX="66.0" layoutY="-98.0" text="hi" />
   </children>
</AnchorPane>

Build.Gradle

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

repositories {
    mavenCentral()
}

dependencies {
    modules = [ 'javafx.controls', 'javafx.fxml' ]
    version = "11.0.2"
}

mainClassName = 'Library'

我怀疑这里有一些问题,因为当我运行gradle项目时,我不能运行它。我只能建造它。

public class Library {
    public static void main(String arg[]) {
        ex2.UIApplication.run(arg);
    }
}

当我运行这个时,我得到了相当多的错误。

VM参数:--module-path“C:\users\andes\javafx-sdk-11.0.2\lib”--add-modules=javafx.controls,javafx.fxml

错误:找不到或加载主类LAB_3_1.Library

package ex2;

import javafx.event.ActionEvent;

import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;

public class Lab3Controller {

    @FXML
    private Button button1;

    @FXML
    private Label label1;

    @FXML
    void buttonPressed(ActionEvent event) {

    }

}

uiapplication.java:

package ex2;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class UIApplication extends Application{
    @Override
    public void start(Stage stage) throws Exception{
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource("/ui.fxml"));
        VBox root = (VBox) loader.load();
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.setTitle("Lab 3");;
        stage.show();
    }

    public static void run (String arg[]) {
        Application.launch(arg);
    }
}

共有1个答案

焦正德
2023-03-14

问题是,您的Mainclass直接从应用程序扩展。

您需要通过一个不从应用程序扩展的类来启动它。

从这里开始。


public class AppLauncher {

    public static void main(String[] args) {
        Application.launch(UIApplication.class, args);
    }
}


javafx {

    version = "11"
    modules = [ 'javafx.controls', 'javafx.fxml','javafx.graphics']
}

dependencies {

    // your other dependecies



    implementation 'org.openjfx:javafx:11'
    compile group: 'org.openjfx', name: 'javafx', version: '11.0.2'



}


compileJava {
    doFirst {
        options.compilerArgs = [
                '--module-path', classpath.asPath,
                '--add-modules', 'javafx.controls,javafx.fxml,javafx.graphics'
        ]
        println options.compilerArgs
    }

}



 类似资料:
  • 例如。 这应该运行一个简单的hello world应用程序,摘自oracle文档。然而,当我‘运行’这个代码,没有窗口打开。取而代之的是打开一个名为“Java”的应用程序。看起来'java'只是一个位于'jdk1.8.0_25.jdk/contents/home/bin'中的'UNIX可执行文件‘。应用程序'java'绝对不显示任何东西,并且在没有强制退出的情况下无法关闭。 我在MacBook上运

  • 我现在正在学习Android,在这方面我确实是个新手。我用的是Android版的Eclipse。我已经安装了Android 5.0.1 (API 21)下的所有文件和所有工具。然后我试着创建我的简单的“hello world示例”,但是我得到了很多错误。 以下是我的错误: 你能帮我一下吗?

  • 我想让Gradle使用Eclipse项目依赖项。与这个问题不同,我不想做任何导出,因为我不想在更改后因为忘记再导出而查找问题。与这个问题不同的是,我根本不想将Gradle集成到Eclipse中,因为我对我的Eclipse的工作方式感到满意(它比Gradle构建快得多),而且我还担心我的Eclipse 3.7.2对于这样的游戏来说可能太老了。 理想情况下,我想要 事实上,拿到罐子就足够了。 我试过的

  • 我想在一个Swing应用程序中使用一些JavaFX组件(特别是JFXPanel的HTML5呈现支持)。我的应用程序目前是在Eclipse4.3(Kepler)中设置的,我的机器上安装了最新的Java7 JDK。 这篇来自Oracle的教程建议您只需引用一个JavaFX类,它就可以在Swing应用程序中工作。所以我输入,但是Eclipse不能将其识别为有效的Java类。它确实可以识别其他Java7类

  • 作为一个软件开发人员,我需要做哪些步骤来允许我的JavaFX应用程序与JDK11+一起运行?有什么好的广告吗?是否可以通过Gradle获得OpenJDK?

  • 问题内容: 正如您可能从问题本身可以理解的那样,我是Java的新手。我进行了一个练习,编写一个Java程序,该程序接收一个字符,将其打印并输出Unicode表中的下一个字符。 现在,我有解决此问题的方法: 我了解此代码的基本概念,但是我试图在Eclipse中运行此代码,但遇到一个令人讨厌的错误: 线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:M