如何将JavaFX 2.0类添加到现有Maven项目中?

时间:2012-01-18 19:51:50

标签: maven javafx

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

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:8)

更新(2015年10月6日)

现代JavaFX版本(Oracle Java 8+附带)不需要任何其他类路径来使用JavaFX。 JavaFX运行时位于Java用于编译和执行的默认类路径上。这意味着没有其他依赖关系的普通maven pom.xml文件将构建JavaFX应用程序。

但是,如果您希望为应用程序使用其他打包功能,例如将其部署为self-contained application,则建议使用(第三方)JavaFX Maven plugin

上一个答案

此答案中的以下信息现在已经过时且过时了。

我找到的fest maven插件的链接(http://fest.easytesting.org/javafx/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 Application类并且希望打包通过webstart,浏览器嵌入或作为JavaFX安装感知可点击jar进行部署,那么您应该调整pom.xml文件以执行相关的JavaFX 2.0 ant任务 - http://code.google.com/p/willow-browser/source/browse/pom.xml证明了这种适应性。

这些主题讨论JavaFX 2.0 maven支持并提供进一步的背景信息和示例:

答案 1 :(得分: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>

对于以前版本的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的主目录。

答案 2 :(得分:0)

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

答案 3 :(得分: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>