2012-01-18 113 views
7

我有一个Maven项目,只是在xy轴上显示一个图形。我想将该图更改为Javafx 2.0线图以显示相同的数据。我尝试使用FEST-javafx-maven插件,但我仍然无法编译代码;编译器无法找到所有的javafx.xxx导入。如何将JavaFX 2.0类添加到现有的Maven项目?

任何帮助,将不胜感激。

回答

7

更新(2015年10月6日)

现代的JavaFX版本(附带甲骨文的Java 8+)不需要任何额外的类路径中使用JavaFX的。 JavaFX运行时位于Java用于编译和执行的默认类路径上。这意味着一个普通的maven pom.xml文件将不会构建JavaFX应用程序,而且不会有其他依赖关系。但是,如果您希望为您的应用程序使用其他打包功能,例如将其部署为self-contained application,那么我建议您使用(第三方)JavaFX Maven plugin

以前的答案

在这个答案以下信息是现在大多陈旧过时。

我找到的fest maven插件(​​)的链接是用于构建JavaFX 1.x脚本项目的工具,它是与JavaFX 2.0完全不同且不兼容的野兽 - 我不确定是否存在支持JavaFX 2.0的fest maven插件的更新版本。

目前没有官方支持来自Oracle的Maven,也没有公开托管的Maven存储库中的JavaFX 2.0版本。

但是,我已经使用maven过去成功构建了JavaFX 2.0项目,使用jfxrt.jar的系统范围依赖关系和(可选)从maven调用JavaFX ant任务。

如果通过JFXPanel将图形嵌入到现有的Swing应用程序中,则不需要使用JavaFX ant任务。从JavaFX运行时添加jfxrt.jar作为系统依赖项,或手动将其安装到Maven仓库中以使用非系统作用域依赖项。

手动安装所需的JavaFX 2.0运行时jar命令的一个例子是:

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 

运行上面的命令后,加入依赖于jfxrt.jar文件到您的Maven POM文件和你的项目汇编应该可以解决所有的JavaFX API参考:

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

如果扩展JavaFX应用程序类,你想你的应用程序打包以便通过Webstart的,浏览器部署嵌入或作为一个JavaFX安装意识到点击罐子,那么你应该调整您的pom.xml文件以执行相关的JavaFX 2.0 ant任务 - http://code.google.com/p/willow-browser/source/browse/pom.xml演示了这样的适应。

这些线程讨论JavaFX 2。0 Maven支持,并提供更多的背景资料和样品:

+0

非常感谢您的帮助。 – 2012-01-20 15:56:11

+0

我真正想要做的是用JFX2.0线形图替换现有的带有图形的JPanel。我可以不重绘整个JFrame等? – 2012-01-20 15:58:55

+0

是的,只需用JFXPanel替换JPanel,请参阅此处以获取documentation => http://docs.oracle.com/javafx/2.0/api/javafx/embed/swing/JFXPanel.html – jewelsea 2012-01-20 19:52:19

3

我有同样的问题,这里是我的解决方案:

如果使用Java 7u7(JavaFX是集成到jdk/jre中):

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

For以前版本的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> 

而且您必须将系统变量JAVAFX_HOME设置为JavaFx的主目录。

0

您可以试试JavaFX Maven plugin。这需要将javafx添加到类路径以及构建JavaFX应用程序和创建Windows/Mac/Linux可执行文件,以及双击JAR和JNLP文件。

0

使用JDK 1.7,您必须执行以下mvn目标。

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

这个命令将改变你的JRE的类路径和jfxrt.jar复制到JAVA_HOME \ lib \ ext目录。

这里采取额外的外观进一步的信息: JavaFX Maven Plugin

在你的POM文件,你必须添加以下的依赖配置。

 <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> 
相关问题