2013-03-07 14 views
28

JavaFXを使用するmavenプロジェクトを設定しています。 JavaFXにはJavaのすべてのバージョンが付属していないと聞いたので、私はjfxrt.jarファイルをダウンロードし、私のプロジェクトのlibディレクトリに入れました。JavaFXを使用したMavenプロジェクト( `lib`にjarファイルがある)

1)依存関係(つまり、JavaFX)をダウンロードしないでください(ただし、libにあります)。

2)これは、プロジェクトがJDKを持つ任意のマシン上にビルドできることを意味します(JDK 1.7 - update 9+は必要ありません)。 MavenのでのJavaFXアプリケーションを構築するための

答えて

55

推奨される方法

  1. JavaFXのためのMavenの依存関係のいずれかの種類を指定しないmaven JavaFX plugin AND/OR
  2. 使用するJava 8を使用してください。

Java 8とは異なり、JavaFXは標準のJavaランタイムクラスパス(Swingが現在の方法と似ているため)に依存するため、JavaFXをmaven依存として設定する必要はありません。

意見

私はプロジェクトlibディレクトリにjfxrt.jarファイルを配置するあなたの質問でのアプローチは欠陥があると思います。

それは欠陥がある理由は、次のとおりです。

  1. JavaFXのは、ネイティブライブラリが含まれて、あなたは(jfxrt.jarがそれらを見つけることができるだろう場所に)だけでなく、それらを含める必要があります。
  2. JavaFXの特定のバージョンは、出荷されるJDKのバージョンに対してのみ動作することが保証されているため、プロジェクトのlibディレクトリに配置するJavaFXランタイムは、JDK 8などの後のJDKバージョンに対しては動作しません。
  3. JDK 8などのJDKの将来のバージョンでは、JDKのデフォルトのクラスパスにJavaFXが含まれているため、libディレクトリにあるバージョンと競合する可能性があります。

要約すると、JavaFXは、プロジェクトライブラリではなく、Javaランタイムシステムの一部として扱う必要があります。

JavaFXのシステム依存サンプル

は、Java 7を使用する必要がありますし、あなたがたJavaFX Mavenプラグインを使用したくない場合は、あなたが以下の推奨アプローチ取ることができます:

  • リファレンスJavaFXライブラリをmaven system dependencyとしてjdk(あなたのプロジェクトではないlibディレクトリ)からダウンロードします。

このサンプルは、Java 7のみで提供されているため、Java 8では必須ではなく、動作しません。Java 8では、jfxrt.jarを$ {java.home}/lib/ext/jfxrt。jarはデフォルトのJavaランタイムクラスパス上にあり、Java 8のシステム依存関係は無関係です。

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

あなたは、このようなシステムの依存関係を使用してアプリケーションをパッケージ化する場合、あなたは、Javaでアプリケーションを実行しているとき、彼らは実行時クラスパスにjfxrt.jar追加できるように、ユーザーのためのいくつかの実行命令を記述する必要があります必要があります7.これは、このアプローチを使用しない非常に良い理由です。

mavenシステムへの依存性アプローチを使用する場合は、のようにJavaFX ant tasksへの呼び出しを埋め込むために、maven antrun pluginを使用することもできます。 maven enforcer pluginを使用して、少なくともアプリケーションが動作するために必要なJavaFXバージョンを含むJavaの最低限必要なバージョンに対してアプリケーションが構築されていることを確認することもできます。

+0

答えをありがとう。私があなたが言及したアプローチ(すなわち、 'jdk1.7.0_09'ディレクトリへのローカルパスを指定しましたが、' jdk.1.7.0_u4'以外のjdkのそれより高いバージョンはインストールできませんでした。 Snow Leopard(私はoracleのウェブサイトを試しましたが、インストーラはMountain Lionのみで動作します!)Snow Leopardにインストールするための '1.7.0_09'バージョンの入手方法は知っていますか? –

+0

JavaFX 2はSnow Leopard(OS X 10.6)で動作しません - 必要なOS Xのバージョンは最低10.7(lion)です。 – jewelsea

+0

OSXで開発することはできません10.6しかし、実行可能なjarをビルドした場合、OSX 10.6で実行できますか? –

関連する問題