proyecto - Compilar el código usando JavaFX 2.0(usando la línea de comando)
error: no se ha encontrado o cargado la clase principal (5)
En macbook, osx, etc., puede compilar:
javac -cp "/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfxrt.jar" Fxservidor.java
y correr:
java -cp ".:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfxrt.jar" Fxservidor
Tenga en cuenta el .:
lugar de .;
Me pregunto cómo compilar código usando JavaFX, desde un shell de Windows.
Tengo este código en 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();
}
}
FWIW, en JDK 8, el contenedor JavaFX parece estar disponible sin tener que ponerlo en el classpath.
path/to/jdk1.8.0-b96/bin/javac HelloWorld.java
path/to/jdk1.8.0-b96/bin/java HelloWorld
funciona como esperarías
La solución simple pero cruda es poner una copia del archivo jfxrt.jar en el directorio ... / jre7 / lib / ext en su instalación java.
Entonces, siempre debes tenerlo disponible en tu classpath.
No recomendado para la distribución de aplicaciones jfx, por supuesto, pero conveniente para desarrolladores que están jugando ...
(Para una explicación, ver: http://docs.oracle.com/javase/tutorial/ext/basics/install.html )
Oracle Java 8
Si está utilizando Oracle Java 8 o una versión más nueva, como señaló cayhorstmann en su respuesta, las clases de JavaFX están ahora en el classpath de tiempo de ejecución predeterminado para una implementación de Oracle Java. Puede ejecutar javac
y java
en su programa y las clases de JavaFX se encontrarán como se espera, al igual que cualquier otra clase en el JRE.
javac Fxservidor.java
java Fxservidor
OpenJDK 8
Si está utilizando OpenJDK 8, (actualmente) necesitará compilar las fuentes de JavaFX desde el repositorio de OpenJFX y colocar el jfxrt.jar resultante en su classpath similar a la descripción de Java 7 definida en esta respuesta.
JavaFX 2.x / Java 7
Utiliza el compilador de Java para compilar programas JavaFX:
"%JDK_HOME%/bin/javac" -classpath "%JAVAFX_SDK_HOME%/rt/lib/jfxrt.jar" fxservidor.java
Reemplace los marcadores de posición JDK_HOME y JAVAFX_SDK_HOME con las rutas a su JDK instalado y JavaFX SDK, respectivamente.
here se proporciona un ejemplo de script por lotes para el desarrollo de línea de comandos JavaFX 2.x y el empaquetado de implementación.
Aquí hay un comando que ejecuté en mi máquina para compilar su aplicación (necesita ajustar la ruta de clases para su entorno):
javac -classpath "/Program Files/Oracle/JavaFX 2.1 Runtime/lib/jfxrt.jar" Fxservidor.java
Y aquí hay un comando que solía ejecutar la clase compilada:
java -classpath "/Program Files/Oracle/JavaFX 2.1 Runtime/lib/jfxrt.jar;." Fxservidor
Tenga en cuenta el ;.
tokens utilizados para anexar el directorio actual al classpath del comando java execution en Windows (si usa una variante Unix, entonces use :.
lugar de ;.
).
Aplicación de muestra
Aquí hay una versión modificada de su programa que compilará:
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();
}
}
Despliegue Recomendación
Si está implementando aplicaciones para los usuarios, incluso con Java 8, se recomienda empaquetar aplicaciones utilizando herramientas de empaquetado relevantes (por ejemplo, tareas de JavaFX y tareas , javafxpackager , javafx-maven-plugin o javafx-gradle-plugin ).
Si solo desea realizar un desarrollo y prueba de línea de comando rápido, de programas pequeños, esas herramientas de empaque adicionales no son necesarias y puede simplemente usar los pasos simples en esta respuesta.
javac -classpath "/Program Files/Oracle/JavaFX 2.1 Runtime/lib/jfxrt.jar" Fxservidor.java
JavaFX2.0 beta
el comando anterior en Ubuntu Linux con JavaFX2.0 beta
compilé sus archivos de clase, pero cuando intenté ejecutarlo con este comando, no funcionó.
java -classpath "/Program Files/Oracle/JavaFX 2.1 Runtime/lib/jfxrt.jar" Fxservidor
Este es el mensaje de error que recibo:
Error: no se pudo encontrar o cargar la clase principal Fxservidor