Compiler le code en utilisant JavaFX 2.0 (en utilisant la ligne de commande)

je me demande comment compiler du code en utilisant JavaFX, à partir d'un shell Windows.

j'ai ce code dans fxservidor.java :

public class Fxservidor extends Application {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {        
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                Synthetizer os = new Synthetizer("Ximena");                
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }
}
24
demandé sur xav 2012-02-24 22:40:14

5 réponses

Oracle Java 8

si vous utilisez Oracle Java 8 ou plus récent, comme l'a souligné cayhorstmann dans sa réponse, les classes JavaFX sont maintenant sur le chemin de classe d'exécution par défaut pour une implémentation Oracle Java. Vous pouvez simplement exécuter javac et java sur votre programme et les classes JavaFX seront trouvées comme prévu, tout comme n'importe quelle autre classe dans la JRE.

javac Fxservidor.java
java Fxservidor

OpenJDK 8

si vous utilisez OpenJDK 8, vous devrez (actuellement) construire les sources JavaFX à partir du dépôt OpenJFX et placer la jfxrt résultante.jar sur votre chemin de classe similaire à la description de Java 7 définie dans cette réponse.

JavaFX 2.X / Java 7

vous utilisez le compilateur Java pour compiler les programmes JavaFX:

"%JDK_HOME%\bin\javac" -classpath "%JAVAFX_SDK_HOME%\rt\lib\jfxrt.jar" fxservidor.java 

remplacez les paramètres jdk_home et JAVAFX_SDK_HOME par les chemins de votre SDK JDK et JavaFX respectivement installés.

un exemple de script de lot windows pour JavaFX 2.x l'emballage de développement et de déploiement en ligne de commande est fourni ici .

Voici une commande que j'ai lancée sur ma machine pour compiler votre application (vous devez ajuster le chemin de classe pour votre environnement):

javac -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar" Fxservidor.java

et voici une commande que j'ai utilisée pour lancer la classe compilée:

java -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar;." Fxservidor

notez les jetons ;. utilisés pour ajouter le répertoire courant au chemin de classe de la commande d'exécution java dans Windows (si vous utilisez une variante Unix, utilisez alors :. au lieu de ;. ).

Exemple D'Application

Voici une version modifiée de votre programme qui compilera:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Fxservidor extends Application {

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

    @Override public void start(Stage primaryStage) {        
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello);
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }

}

Recommandation De Déploiement

si vous déployez des applications aux utilisateurs, même avec Java 8, Il est recommandé d'empaqueter des applications en utilisant les outils d'empaquetage appropriés (par exemple tâches JavaFX ant , javafxpackager , javafx-maven-plugin ou javafx-gradle-plugin ).

Si vous voulez juste pour faire du développement et des tests rapides en ligne de commande, de petits programmes, ces outils d'empaquetage supplémentaires ne sont pas nécessaires et vous pouvez simplement utiliser les étapes simples dans cette réponse.

25
répondu jewelsea 2013-07-17 06:22:23

dans macbook, osx, etc, Vous pouvez compiler:

javac -cp "/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfxrt.jar" Fxservidor.java

et courir:

java -cp ".:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfxrt.jar" Fxservidor

Note: .: au lieu de .;

8
répondu Euler Geek 2012-11-08 00:04:57
javac -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar" Fxservidor.java

j'ai exécuté la commande ci-dessus sur Ubuntu Linux avec JavaFX2.0 beta il a compilé ses fichiers de classe, mais quand j'ai essayé de l'exécuter avec cette commande, il n'a pas fonctionné.

java -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar" Fxservidor

C'est le message d'erreur que j'obtiens:

erreur: Impossible de trouver ou de charger la classe principale fxservidor

5
répondu entricular 2012-10-27 16:00:58

FWIW, en JDK 8, Le Bocal JavaFX semble être disponible sans avoir à le mettre sur le chemin de la classe.

path/to/jdk1.8.0-b96/bin/javac HelloWorld.java
path/to/jdk1.8.0-b96/bin/java HelloWorld

, c'est normal.

3
répondu cayhorstmann 2013-07-17 04:22:26

la solution brute mais simple est de mettre une copie de jfxrt.fichier jar dans le .../jre7 / lib / ext répertoire sous votre installation java.

alors, vous devriez toujours l'avoir disponible sur votre chemin de classe.

N'est pas recommandé pour distribuer les applications jfx, bien sûr, mais pratique pour les développeurs de jouer autour...

(pour explication, voir: http://docs.oracle.com/javase/tutorial/ext/basics/install.html )

1
répondu Rop 2013-04-30 20:58:59