2012-01-18 36 views
7

私はxy軸上にグラフを表示するだけのMavenプロジェクトを持っています。このグラフをJavafx 2.0の線図に変更して、同じデータを表示したいと思います。私はFEST-javafx-mavenプラグインを使ってみましたが、まだコードをコンパイルできません。コンパイラはすべてのjavafx.xxxインポートを見つけることができません。既存のMavenプロジェクトにJavaFX 2.0クラスを追加するにはどうすればよいですか?

ご協力いただければ幸いです。

答えて

7

アップデート(2015年10月6日)(オラクルのJava 8+に同梱)

現代のJavaFXバージョンはJavaFXのを使用するために、任意の追加のクラスパスを必要としません。 JavaFXランタイムは、コンパイルと実行にJavaが使用するデフォルトのクラスパス上にあります。これは、追加の依存関係のないプレーンなmaven pom.xmlファイルがJavaFXアプリケーションを構築することを意味します。

self-contained applicationとして展開するなど、アプリケーションに追加のパッケージ機能を使用する場合は、(第三者の)JavaFX Maven pluginを使用することをお勧めします。

前の回答

この回答に次の情報は今、ほとんどが古いと時代遅れです。

私が見つけた催しMavenプラグイン(​​)へのリンクはJavaFXの2.0に完全に異なると互換性のない獣でのJavaFX 1.xのスクリプトプロジェクトを構築するためのツールにある - 私があるかどうかわかりませんJavaFX 2.0をサポートするfest mavenプラグインの最新バージョン。

現在、Mavenからのオフィシャルサポートはありません。公開されているMavenリポジトリには、JavaFX 2.0のバージョンもありません。

しかし、過去にmavenを使ってJavaFX 2.0プロジェクトを構築したところ、jfxrt.jarにシステムスコープの依存関係を使用し、(必要に応じて)mavenからJavaFX Antタスクを呼び出すことで成功しました。

既存のSwingアプリケーションにJFXPanelを使用してグラフを埋め込む場合は、JavaFX Antタスクを使用する必要はありません。 jfxrt.jarをJavaFXランタイムからシステム依存として追加するか、手動で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 

上記のコマンドを実行した後、あなたのMavenのPOMと、プロジェクトのコンパイルにjfxrt.jarファイルに依存関係を追加しますすべてのJavaFX APIの参照を解決する必要があります

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

あなたはJavaFXのApplicationクラスを拡張して、あなたのアプリケーションがWebStartの、ブラウザ埋め込むか、JavaFXのインストールと認識して、クリック可能なjarファイルを経由して、展開用にパッケージ化したい場合、あなたがすべき関連するJavaFX 2.0のAntタスクを実行するようにpom.xmlファイルを修正してください。 - http://code.google.com/p/willow-browser/source/browse/pom.xmlはそのような適応性を実証しています。

これらのスレッドでは、JavaFX 2について説明します。0 Mavenのサポートや、さらに背景情報やサンプルを提供します。

+0

あなたのご協力ありがとうございます。 –

+0

私が実際にやろうとしているのは、グラフを持つ既存のJPanelをJFX2.0の線図に置き換えることです。私はJFrameなどの全体を再描画せずにこの作業を行うことができますか? –

+0

はい、JPanelをJFXPanelに置き換えてください。documentation => http://docs.oracle.com/javafx/2.0/api/javafx/embed/swing/JFXPanel.html – jewelsea

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のホームディレクトリに設定する必要があります。

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のクラスパスを変更し、JAVA_HOME \ lib \ extディレクトリにjfxrt.jarをコピーします。次の依存関係の設定を追加する必要があなたのポンポンファイル内 JavaFX Maven Plugin

は、詳細についてはこちらを追加見てみましょう。

 <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> 
関連する問題