IDEA IntelliJ Gradle und JavaFX

temi

Top Contributor
Ich bin gerade etwas überfordert.
Ich würde gerne eine Anwendung mit JavaFX erstellen, was mit IntelliJ ja recht einfach vonstatten geht, indem man bei Projekt - Neu JavaFX auswählt.
Ich würde allerdings auch gerne Gradle verwenden, weil ich es praktisch finde, auf diese Weise zusätzliche Bibliotheken einzubinden.
Aber wie geht das beides zusammen?
Ich habe bereits dieses https://github.com/FibreFoX/javafx-gradle-plugin gefunden, aber habe ehrlich gesagt, keine Ahnung, was das überhaupt bewirkt und wie ich damit starten soll:
Using javafx-gradle-plugin enhances your build-script with javapackager-power. No more using Apache Ant-calls, because this gradle-plugin wraps all calls and introduces workarounds and fixes for not-yet-fixed JDK-bugs.

Was ist zusätzlich zu beachten, wenn ich unter Linux für Windows entwickeln möchte?

Kann mich bitte jemand aufklären?

Sorry, falls das alles Peanuts sind, aber als Hobbyprogrammierer, ist mir der Umgang mit Buildtools irgendwie zu hoch.

Gruß,
temi
 

Robat

Top Contributor
Wieso erstellst du nicht einfach ein neues Gradle-Projekt in Intellij und fügst dann selbstständig deine JavaFX-Files hinzu?
Das einzige was Intellij bei einem neuen JavaFx-Projekt macht (berichtige mich, wenn ich falsch liege) ist eine sample fxml, Main und Controller zu erstellen.
 

temi

Top Contributor
Wieso erstellst du nicht einfach ein neues Gradle-Projekt in Intellij und fügst dann selbstständig deine JavaFX-Files hinzu?
Wald vor Bäumen usw. :confused: Hab ich gemacht, aber ich kriege es nicht zum Laufen.
Gradle-Projekt erstellt, die Struktur wird dabei automatisch erzeugt (gekürzt):
src/main/java
src/test/java

Danach unter src/main/java eine JavaFx Applikation, ein FXML-File und eine Controller Klasse eingefügt.
Java:
public class testFxWithGradle extends Application
{
    public static void main(String[] args)
    {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception
    {
        Parent root = FXMLLoader.load(getClass().getResource("src/main/java/mainView.fxml")); // <=== Exception!!!
        primaryStage.setTitle("Hallo Welt");
        primaryStage.setScene(new Scene(root, 600, 400));
        primaryStage.show();
    }
}

Die Ursache liegt vermutlich an der markierten Stelle, wo die fxml geladen wird und es hat (vermutlich) mit dem Pfad dahin zu tun.

Ich habe hier schon alle möglichen Varianten mit und ohne Unterverzeichnisse ausprobiert, leider ohne Erfolg. Ich habe die gleiche Vorgehensweise auch ohne Gradle-Projekt mal ausprobiert und da funktioniert es. Was muss da stehen?
 

mrBrown

Super-Moderator
Mitarbeiter
Die fxml-Datei muss in src/main/resources liegen und als Pfad muss dann nur der Pfad unterhalb von Resources angegeben werden, zb /mainView.fxml
 

Robat

Top Contributor
Schieb die fxml-Datei mal in den resource-Ordner.
Der Pfad muss dann von dem Ordner aus beginnen.

Edit: Too late.
 

temi

Top Contributor
Danke euch beiden. Hatte auch eben schon herausgefunden, dass die fxml im "out" nicht vorhanden war. Nachdem sie jetzt unter resources liegt, hat es funktioniert.

Aber trotzdem noch:

Das ging (mit ein paar Startschwierigkeiten) ja relativ einfach.

Wozu ist dann das o.g. gradle-plugin überhaupt da? Was macht es mehr oder anders? Braucht man das?
 

mrBrown

Super-Moderator
Mitarbeiter
Möglich ist das - aber Konvention ist, das der src/main/java für Java-Datein ist. Geht es dir um Package oder Ordner? Die Package-Struktur kannst du natürlich auch in src/main/resources haben. Am Laden der Datein würde sich so oder so nichts ändern.
 

looparda

Top Contributor
Du hast Recht, im Filesystem liegen sie doch nicht nebeneinander. Ich hatte es mit dem spring boot packaging als jar verwechselt - dort liegen sie dann wirklich zusammen im jar.
 

mrBrown

Super-Moderator
Mitarbeiter
Du hast Recht, im Filesystem liegen sie doch nicht nebeneinander. Ich hatte es mit dem spring boot packaging als jar verwechselt - dort liegen sie dann wirklich zusammen im jar.
In der jar liegen sie auch zusammen - aber auch mit dem Spring repackaging werden nur java-Datein in src/main/java berücksichtigt und alles andere ignoriert. Das ist eine gradle/maven-Sache.
 

temi

Top Contributor
Das funktioniert nicht mit der Standard-Konfiguration.

Kann ich bestätigen, dass ist nämlich mein Ursprungsproblem gewesen.
Aber kurze Nachfrage: Standardkonfiguration von was?
Wenn ich einfach ein JavaFX Projekt erstelle, dann kann ich die fxml in den java ordner packen und es funktioniert. Nur mit Gradle haut es nicht mehr hin, demnach müsste es sich also um die Gradle-Konfiguration handeln?

Geht es dir um Package oder Ordner?
Eher Ordner. Ich finde es logischer wenn alles was zu einem bestimmten View gehört auch zusammen abgelegt ist.
Bevor ich jetzt allerdings alles verbiegen muss, werde ich einfach damit leben wie es ist. Es gibt genügend andere Probleme und Problemchen zu lösen ;)
 

mrBrown

Super-Moderator
Mitarbeiter
Kann ich bestätigen, dass ist nämlich mein Ursprungsproblem gewesen.
Aber kurze Nachfrage: Standardkonfiguration von was?
Wenn ich einfach ein JavaFX Projekt erstelle, dann kann ich die fxml in den java ordner packen und es funktioniert. Nur mit Gradle haut es nicht mehr hin, demnach müsste es sich also um die Gradle-Konfiguration handeln?
Genau, ist die Gradle-Konfiguration.
Da ist Code von sonstigen Ressourcen getrennt.

Eher Ordner. Ich finde es logischer wenn alles was zu einem bestimmten View gehört auch zusammen abgelegt ist.
Bevor ich jetzt allerdings alles verbiegen muss, werde ich einfach damit leben wie es ist. Es gibt genügend andere Probleme und Problemchen zu lösen ;)
Man kann es auch anders sehen: Die Dinge, die getrennt sein sollten, sind getrennt - sowohl nach Dateitypen (java, fxml), als auch nach "Konzept" (Model, View, Controller) ;)

Wenn du es ändern willst, reicht allerdings eine einzelne Zeile in der gradle-Konfig.
 

temi

Top Contributor
Man kann es auch anders sehen: Die Dinge, die getrennt sein sollten, sind getrennt - sowohl nach Dateitypen (java, fxml), als auch nach "Konzept" (Model, View, Controller) ;)
Ich sehe Für und Wider bei beiden Ansätzen. Ich hatte mal in C# was gemacht, da wurden die einzelnen GUI-Module per MEF in eine Tabview importiert. In dem Fall war es super ein Modul mit View, Viewmodel und ggf. Hilfsklassen zusammen zu halten (das Model kam aus einer DAL). Sobald MEF ein Viewmodel mit passendem Interface gefunden hat, wurde es importiert und der Tabview injiziert, fast wie Zauberei. Wollte man das Modul entfernen, hat man einfach den Ordner rausgeschmissen. Die Kommunikation zwischen den Modulen lief über einen internen Messagehandler. Kein Modul wusste vom andern. Hat mir gefallen. Aber ich schweife ab..

Wenn du es ändern willst, reicht allerdings eine einzelne Zeile in der gradle-Konfig.
Ich werde es erst mal nicht ändern, aber kannst es mir trotzdem verraten?
 

mrBrown

Super-Moderator
Mitarbeiter
Afaik dürfte das etwa so sein: sourceSets.main.resources { srcDirs = ["src/main/java"]; include "**/*.*" }, damit wird src/main/java auch als resource-Ordner gesetzt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J NetBeans gradle Projekt, unter neu keine Auswahl JavaFX IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
8u3631984 VS Code und Gradle Sub Module IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
N Eclipse debug Gradle-Projekt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
J Kombinationsproblem: netbeans, gradle, mysql, json IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
temi Gradle: Externe Abhängigkeiten einschließen? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
temi IntelliJ, Gradle und Git: gitignore IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
J Bekomme keine lauffähige jar (netbeans/gradle) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 12
J Install JasperReports on netbeans/gradle Projekt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
J Gradle add Bom Properties IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
J Gradle localPublish POM IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 11
J mavenBOM alternative für Gradle IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
B IDEA IntelliJ Import Gradle: Plötzlich Android Projekt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 14
M gradle import in eclipse schlägt fehl IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
J Maven in Gradle builden? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 11
N Gradle Ober und Unterordner zusammengefasst IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
L IDEA IntelliJ Gradle sync failed IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
T NetBeans "Gradle Project" in "Web Application" nutzen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
D Jenkins/Gradle maven-publish Problem IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
B IDEA IntelliJ Gradle Projekt debuggen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
temi IDEA IntelliJ Gradle - Erste Schritte IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
M Eclipse lauffähiges Jar auch mit gradle erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
D Gradle - DSL und Repositories von Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
thor_norsk JavaFX funktioniert nicht! IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
G JavaFX Installation IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
K Eclipse JAVAFX Fehler IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 14
A JavaFX in Eclipse einbinden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 22
T Eclipse JavaFX Dokumentation Standort nicht gefunden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 11
M Eclipse - Fehlermeldung bei JavaFX-Projekt "java.lang.module.FindException: Module javafx.controls not found" IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 23
N Eclipse aus Java-Application JavaFX machenModule javafx.controls not found IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
1 Problem beim JavaFX installieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 20
OSchriever Eclipse: JavaFX mit JDK11 nutzen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
M Eclipse JavaFX JDK 12 - bekomme mein Projekt nicht mehr compiliert IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 36
D JavaFX 12 / SDK 12 -> IntelliJ error IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
MiMa JavaFX in Netbeans 11 installieren? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 32
M Eclipse JavaFX ohne e(fx)clipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
K Javafx desktop framework IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 9
L NetBeans WARNING: JavaFX API 8.0.111 - JavaFX runtime 8.0.102 IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
D Eclipse JavaFX Plugin funktioniert nicht IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
n00b4u swing oder javafx IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 14
wolfgang63 NetBeans JavaFX Scenebuilder "Make Controller" geht nicht mehr IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
wolfgang63 BlueJ BlueJ und JavaFX Launcher Fehler IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
N Eclipse Maven , Javafx , SceneBuilder IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
M JavaFX-Plugin für Eclipse Juno IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
L javafx import in NetBeans IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2

Ähnliche Java Themen

Neue Themen


Oben