Запуск простого приложения javafx с проектом gradle в eclipse - PullRequest
0 голосов
/ 27 марта 2020

Я новичок в Eclipse java, Gradle и Javafx. Недавно я пытаюсь написать приложение javafx с gradle-проектом. Ниже приведены всевозможные подробности, которые я хотел бы предоставить.

Версия и местоположение Javafx SDK

Версия и местоположение Scene Builder

Мой вопрос также возникает здесь, как на самом деле работает заполнение в Eclipse? Где я должен разместить класс водителя? Под src / main / java?

Мой каталог Eclipse

Так я форматирую свой пользовательский интерфейс.

ui.f xml:

> <?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, я не могу его запустить. Я мог только построить его.

Ошибка Gradle: невозможно установить значение свойства 'modules' только для чтения для объекта типа org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

Библиотека. java: (класс драйвера)

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.f xml

Ошибка: не удалось найти или загрузить основной класс Lab_3_1.Library

Lab3Controller. java:

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 Ответ

0 голосов
/ 27 марта 2020

Проблема в том, что ваш Mainclass расширяется прямо из приложения.

Вам необходимо запустить его через класс, который не распространяется из приложения.

И начните отсюда.


public class AppLauncher {

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

Еще один совет. Если вы хотите запустить ваше приложение без "vm Arguments", вам следует рассмотреть информацию о модуле. java, чтобы указать вашему приложению, какие модули использовать.

Или вы можете обновить свою конфигурацию Gradle, так как вы уже используете плагин Java fx:


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
    }

}



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...