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();
}
}
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.
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 .;
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
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.
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 )