2012-01-18 30 views
7

Tengo un proyecto Maven que solo muestra un gráfico en el eje xy. Quiero cambiar ese gráfico a un diagrama de líneas Javafx 2.0 para mostrar los mismos datos. Intenté usar el complemento FEST-javafx-maven, pero todavía no puedo compilar el código; el compilador no puede encontrar todas las importaciones de javafx.xxx.¿Cómo puedo agregar una clase JavaFX 2.0 a un proyecto Maven existente?

Cualquier ayuda sería apreciada.

Respuesta

7

Actualización (octubre 6 2015)

versiones JavaFX modernos (incluido con Oracle Java 8+) no requieren ninguna ruta de clase adicional para utilizar JavaFX. El tiempo de ejecución de JavaFX se encuentra en el classpath predeterminado que Java usa para la compilación y ejecución. Esto significa que un archivo plain maven pom.xml, sin dependencias adicionales, construirá una aplicación JavaFX.

Sin embargo, si desea utilizar funciones de empaquetado adicionales para su aplicación, como la posibilidad de implementarlo como self-contained application, entonces le aconsejo usar el (tercero) JavaFX Maven plugin.

respuesta anterior

La siguiente información en esta respuesta es ahora en su mayoría viejo y anticuado.

El enlace al plugin fest maven que encontré (http://fest.easytesting.org/javafx/maven/) es una herramienta para crear proyectos de script JavaFX 1.x, que es una bestia completamente diferente e incompatible con JavaFX 2.0 - No estoy seguro de si hay un versión actualizada del plugin fest maven que soporta JavaFX 2.0.

Actualmente no hay soporte oficial para Maven de Oracle, ni una versión de JavaFX 2.0 en un repositorio Maven alojado de forma pública.

Sin embargo, he creado con éxito proyectos JavaFX 2.0 utilizando maven en el pasado mediante el uso de una dependencia de ámbito de sistema en jfxrt.jar y (opcionalmente) invocando las tareas de JavaFX y de maven.

Si está incrustando su gráfico en una aplicación Swing existente a través de un JFXPanel, entonces no necesita usar las tareas JavaFX ant. Agregue jfxrt.jar del tiempo de ejecución de JavaFX como una dependencia del sistema O instálelo manualmente en su repositorio de maven para usar una dependencia de ámbito no del sistema.

Un ejemplo del comando para instalar manualmente el frasco de JavaFX 2.0 tiempo de ejecución requerido es:

mvn install:install-file -Dfile="C:\Program Files\Oracle\JavaFX 2.1.0 SDK\rt\lib\jfxrt.jar" -DgroupId=com.oracle.javafx -DartifactId=javafx -Dversion=2.1 -Dpackaging=jar 

Después de ejecutar el comando anterior, añadir la dependencia en el fichero de jfxrt.jar a su POM Maven y la compilación de proyectos debe resolver todas las referencias de la API de JavaFX:

<dependency> 
    <groupId>com.oracle.javafx</groupId> 
    <artifactId>javafx</artifactId> 
    <version>2.1</version> 
</dependency> 

Si se extiende la clase de aplicaciones JavaFX y quiere que su aplicación empaquetada para su despliegue a través de WebStart, navegador de la incrustación o como hacer clic en un frasco de instalación de JavaFX conscientes, entonces debería adapte su archivo pom.xml para ejecutar las tareas relevantes de JavaFX 2.0 - http://code.google.com/p/willow-browser/source/browse/pom.xml muestra dicha adaptación.

Estos hilos discuten JavaFX 2.0 experta apoyan y proporcionan más información de fondo y las muestras:

+0

Gracias por toda su ayuda sofar. –

+0

Lo que realmente estoy tratando de hacer es reemplazar un JPanel existente que tiene un gráfico, con un diagrama de línea JFX2.0. ¿Puedo hacer esto sin volver a dibujar todo el JFrame, etc.? –

+0

Sí, simplemente reemplace el JPanel con un JFXPanel, consulte aquí la documentación => http://docs.oracle.com/javafx/2.0/api/javafx/embed/swing/JFXPanel.html – jewelsea

3

que tenía el mismo problema y aquí está mi solución:

Si se utiliza 7u7 de Java (javafx es integrado en jdk/jre):

<dependency> 
     <groupId>javafx</groupId> 
     <artifactId>javafx</artifactId> 
     <version>2.1</version> 
     <scope>system</scope> 
     <systemPath>${java.home}/lib/jfxrt.jar</systemPath> 
    </dependency> 

Para Las versiones anteriores de Java:

<dependency> 
     <groupId>javafx</groupId> 
     <artifactId>javafx</artifactId> 
     <version>2.1</version> 
     <scope>system</scope> 
     <systemPath>${env.JAVAFX_HOME}\rt\lib\jfxrt.jar</systemPath> 
    </dependency> 

y hay que establecer la variable del sistema JAVAFX_HOME al directorio home de JavaFX.

0

Puede probar el JavaFX Maven plugin. Esto se encarga de agregar javafx a la ruta de clase, así como de crear aplicaciones JavaFX y crear ejecutables de Windows/Mac/Linux, así como archivos JAR y JNLP con doble clic.

0

Usando JDK 1.7 debe realizar el siguiente objetivo de mvn.

mvn com.zenjava:javafx-maven-plugin:2.0:fix-classpath 

Este comando va a cambiar la ruta de clase de JRE y copiar el jfxrt.jar al directorio JAVA_HOME \ lib \ ext.

Tome una mirada adicional aquí para más información: JavaFX Maven Plugin

Dentro de su pom-archivo que hay que añadir la siguiente configuración dependencia.

 <dependency> 
     <groupId>javafx</groupId> 
     <artifactId>jfxrt</artifactId> 
     <version>2.2</version> 
     <!-- <version>${javafx.min.version}</version> --> 
     <scope>system</scope> 
     <systemPath>${java.home}/lib/ext/jfxrt.jar</systemPath> 
    </dependency> 
Cuestiones relacionadas