Wie konvertiert man ein normales Java-Projekt in intellij in ein JavaFx-Projekt?

8

Ich verwende derzeit ein normales Java-Projekt (Gradle-Projekt) und möchte dieses in ein JavaFx-Projekt konvertieren, ohne die vorhandenen Quellen in ein neues Javafx-Projekt importieren zu müssen. Gibt es einen Weg, dies zu erreichen?

    
Wizard 02.05.2014, 05:24
quelle

4 Antworten

8

Es gibt nichts zu konvertieren.

Ich glaube nicht, dass es einen Unterschied in der Idee zwischen einem "normalen" Java-Projekt und einem JavaFX-Projekt gibt.

Sicher, in Idea 12.x + gibt es einen Assistenten, mit dem Sie ein neues JavaFX-Projekt erstellen können. Aber ich denke, dass alles, was es tut, ist eine Beispiel-Hello-Welt-Anwendung zu erstellen - nach der ersten Erstellung ist die Art, wie das Projekt funktioniert, nicht anders als jedes andere Java-Projekt.

Und so sollte es sein, JavaFX ist nur Java. Oracle unterscheidet nicht zwischen JavaFX und Java in ihrer Distribution, und auch nicht IDEs in ihren Projekttypen.

Ich glaube, in diesem Fall, selbst wenn ich falsch liege, bin ich richtig genug, dass es nicht wirklich wichtig ist, wenn ich falsch liege.

Aktualisieren

Ich habe also falsch genug, dass es wichtig ist: -)

Wenn ich mit Idee 13.1.4 ein neues Projekt mit File | New Project | Java anlege, gibt es folgende Ressourceneinstellungen ( File | Settings | Compiler ):

%Vor%

Das heißt, die Ressourcen für das Projekt werden nur so eingestellt, dass nur bestimmte Dateitypen kopiert werden. Sie könnten es also ändern, um die zusätzlichen Dateitypen zu erhalten, die in einigen JavaFX-Projekten erforderlich sind, indem Sie Ressourcenkopierunterstützung für fxml und css hinzufügen; d. h. Anhängen von ;?*.fxml;?*.css .

Der interessante Teil ist, dass wenn Sie ein neues Projekt mit File | New Project | JavaFX erstellen, die folgenden Ressourceneinstellungen vorhanden sind:

%Vor%

Im Grunde kopiert es alles, was nicht eine Quelldatei, eine Art Datei-Blacklist, sondern eine Datei-Whitelist ist, wie sie von anderen Projekterstellungsvorlagen verwendet wird. Wirklich komisch ... Wie auch immer, die Ressourcensätze sind vom Benutzer konfigurierbar, so dass Sie sie ändern können, wie Sie es für richtig halten, und sobald Sie dies tun, sollten Sie keine Probleme haben (ich glaube, aber ich habe mich vorher geirrt ;-)

Vorschlag - Verwenden Sie Build-Tools von Drittanbietern in Verbindung mit Ihrer IDE

Es könnte besser sein, Ihren Build von einem Drittanbieter-Tool wie Gradle oder Maven zu übernehmen. Idea funktioniert sehr gut mit diesen externen Build-Tools (und anderen) . Die Vorteile der Verwendung eines Drittanbieter-Tools sind:

  1. Projekte mit diesen Tools folgen einer Konvention, bei der Ressourcen in einem bestimmten Ressourcenordner abgelegt werden und alles in diesem Ordner als Ressource behandelt wird, die in Ihrer Build-Ausgabe gepackt werden soll. Es gibt also weniger Verwirrung.
  2. Die resultierenden Projekte sind portabler und einfacher für andere Entwickler, die möglicherweise nicht mit Idea arbeiten.
  3. Die Projekte können leicht durch Systeme zur kontinuierlichen Integration wie Jenkins erstellt werden.
  4. Sowohl Gradle als auch Maven haben JavaFX-spezifische Plugins, die zusätzliche Unterstützung für das Packen von JavaFX-Anwendungen bieten.

Natürlich ist der Nachteil der Verwendung eines Build-Tools von Drittanbietern die Komplexität (und viele Macken), sie zu lernen, da sie manchmal ziemlich das Biest sein können. Also denke ich, es ist ein kleiner Kompromiss - kleine, persönliche Sondierungsprojekte brauchen sie nicht, größere Projekte oder Projekte, die Sie mit anderen teilen möchten, profitieren von solchen Tools.

    
jewelsea 02.05.2014, 05:58
quelle
1

Eine Lösung besteht darin, Ihren Code mithilfe von Scene Builder zu generieren und ihn dann in Ihr vorhandenes IntelliJ-Projekt zu integrieren. Obwohl es möglich sein sollte, dies als Modul zu importieren, können Sie den Code auch einfach dahin verschieben, wo er benötigt wird (entsprechende Korrekturen an Paketanweisungen vornehmen usw.). Wenn Sie feststellen, dass die Javafx-Importe in Ihrem Projekt nicht erkannt werden, versuchen Sie diese Lösung:

Stellen Sie zuerst sicher, dass Sie IntelliJ im Allgemeinen für JavaFX eingerichtet haben, indem Sie die ersten Schritte in diesem Tutorial . Hinweis: Im Folgenden erwähne ich 1.8, aber das sollte mit 1.7+ funktionieren. Ich empfehle 1,8 +.

Zweitens stellen Sie sicher, dass die vorhandenen Projekteinstellungen die Verwendung von javaFX erlauben

  1. Projektstruktur öffnen
  2. Klicken Sie im Bereich für Projekteinstellungen
  3. auf Projekt
  4. Stellen Sie sicher, dass das Project SDK 1.8+ ist.

Third Stellen Sie sicher, dass die Module für ein JDK konfiguriert sind, das JavaFX unterstützt

  1. Projektstruktur öffnen
  2. Klicken Sie im Bereich mit den Projekteinstellungen
  3. auf Module
  4. Stellen Sie sicher, dass das verwendete Modul-SDK javaFX unterstützt. Auch hier verwende ich JDK 1.8, aber es sollte mit 1.7 funktionieren.

Bitte beachten Sie auch, dass Sie, wenn Sie ein Maven-Projekt haben, Ihre fxml an einem bestimmten Ort, "/ main / resources /", ablegen müssen. Werfen Sie einen Blick auf dies.

Das hat für mich funktioniert, und ich hoffe, es hilft dir.

    
Noah Ternullo 13.08.2014 16:18
quelle
1

Ich folgte diesen Schritten

  • Erstellen Sie ein neues Modul in Ihrem vorhandenen intellij-Projekt (A)
  • Erstellen Sie ein neues JavaFx-Projekt an einer anderen Stelle
  • Kopieren Sie den Code aus dem JavaFx-Projekt, nämlich Controller.java,Main.java and sample.fxml , in Ihr Modul im (A) Projekt unter dem Verzeichnis src wie in A/user-interface/src

  • Sie werden einen Fehler in sample.fxml finden, da er auf die Controller-Klasse verweist, da sample.Controller nur auf 'Controller' umschaltet. es funktionierte so (als ich den sample Paketordner löschte

  • In (A) öffnen Sie das Einstellungsmenü File | Project Structure | Modules
  • Wählen Sie das user-interface -Modul aus der Liste auf der linken Seite des Einstellungsfensters
  • Wechseln Sie zum Tab dependencies
  • Fügen Sie Ihr altes Nicht-GUI-Modul als Modulabhängigkeit hinzu, indem Sie die grüne + -Markierung auf der rechten Seite verwenden
  • Jetzt können Sie die Klassen im Nicht-GUI-Modul verwenden, viel Spaß!

Hinweis: Sie können die Add-Modul-Abhängigkeit überspringen und intellij das für Sie tun lassen, geben Sie einfach einen Namen einer Klasse in das alte Modul ein, alt+enter (die Glühbirnenmagie) - & gt; add module depenency

    
shakram02 08.09.2017 04:21
quelle
0

Bitte beachten Sie, dass Ihre Quellordner korrekt eingerichtet sein müssen. Siehe Screenshot, um eine Idee zu bekommen, was ich meine ..

    
Martin Pfeffer 24.10.2015 10:05
quelle