varios proyecto programa error encontrado ejecutar desde consola configurar compilar como clase cargado archivos java compilation javafx-2

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