推奨される方法
:
- JavaFXのためのMavenの依存関係のいずれかの種類を指定しないmaven JavaFX plugin AND/OR
- 使用するJava 8を使用してください。
Java 8とは異なり、JavaFXは標準のJavaランタイムクラスパス(Swingが現在の方法と似ているため)に依存するため、JavaFXをmaven依存として設定する必要はありません。
意見
私はプロジェクトlib
ディレクトリにjfxrt.jar
ファイルを配置するあなたの質問でのアプローチは欠陥があると思います。
それは欠陥がある理由は、次のとおりです。
- JavaFXのは、ネイティブライブラリが含まれて、あなたは(
jfxrt.jar
がそれらを見つけることができるだろう場所に)だけでなく、それらを含める必要があります。
- JavaFXの特定のバージョンは、出荷されるJDKのバージョンに対してのみ動作することが保証されているため、プロジェクトの
lib
ディレクトリに配置するJavaFXランタイムは、JDK 8などの後のJDKバージョンに対しては動作しません。
- JDK 8などのJDKの将来のバージョンでは、JDKのデフォルトのクラスパスにJavaFXが含まれているため、
lib
ディレクトリにあるバージョンと競合する可能性があります。
要約すると、JavaFXは、プロジェクトライブラリではなく、Javaランタイムシステムの一部として扱う必要があります。
JavaFXのシステム依存サンプル
は、Java 7を使用する必要がありますし、あなたがたJavaFX Mavenプラグインを使用したくない場合は、あなたが以下の推奨アプローチ取ることができます:
このサンプルは、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の最低限必要なバージョンに対してアプリケーションが構築されていることを確認することもできます。
答えをありがとう。私があなたが言及したアプローチ(すなわち、 'jdk1.7.0_09'ディレクトリへのローカルパスを指定しましたが、' jdk.1.7.0_u4'以外のjdkのそれより高いバージョンはインストールできませんでした。 Snow Leopard(私はoracleのウェブサイトを試しましたが、インストーラはMountain Lionのみで動作します!)Snow Leopardにインストールするための '1.7.0_09'バージョンの入手方法は知っていますか? –
JavaFX 2はSnow Leopard(OS X 10.6)で動作しません - 必要なOS Xのバージョンは最低10.7(lion)です。 – jewelsea
OSXで開発することはできません10.6しかし、実行可能なjarをビルドした場合、OSX 10.6で実行できますか? –