jdk1.7.0_07 をインストールして PATH を変更しましたが、まだ javafx をインポートできません。これを修正する方法はありますか?
1 に答える
/jre/lib/jfxrt.jar がコンパイル パス上にあることを確認します。
たとえば、win7 の 64 ビット jdk7u6 バージョンの場合、jfxrt.jar は次の場所にあります。
C:\Program Files\Java\jdk1.7.0_06\jre\lib\jfxrt.jar
jfxrt.jar は、JavaFX と Java インフラストラクチャの残りの部分との間のさらなるテストが完了するまで、意図的に jdk1.7.0_06 の Java ランタイム パスから除外されました。これは、JavaFX によって引き起こされる可能性のある互換性の問題によって、JavaFX 以外のプログラムが影響を受ける可能性がないことを意味します。今日まで、互換性の問題に遭遇したことは一度もありません。これは、この点に関して Oracle による慎重な動きであると私は信じています。
将来のリリースでは、jfxrt.jar を Java のデフォルトのコンパイルおよびランタイム クラスパスに追加する必要があり、以下の情報の一部は無関係になるはずです。jfxrt.jar をデフォルトの Java ランタイムに追加するリクエストを追跡できます。
コマンド行からの JavaFX プログラムのコンパイルと実行
以下の例は、という名前の JavaFX アプリケーション クラスの場合です。javafxsamples.AudioPlaylist
コマンド ラインからコンパイルする場合は、次のようにコンパイルします。
javac -cp ".;C:\Program Files\Java\jdk1.7.0_06\jre\lib\jfxrt.jar" javafxsamples/AudioPlaylist.java
コマンドラインから実行するには、次を使用できます。
java -cp ".;C:\Program Files\Java\jdk1.7.0_06\jre\lib\jfxrt.jar" javafxsamples.AudioPlaylist
ただし、手動で jfxrt.jar をクラスパスに追加するのではなく、javafxpackager を使用してアプリケーションをパッケージ化することをお勧めします (javafxpackager パッケージ化されたアプリケーションは、jfxrt.jar を見つけてクラスパスに追加するランチャーを組み込みます)。
javafxpackager -createjar -nocss2bin -appclass javafxsamples.AudioPlaylist -srcdir . -outfile AudioPlaylist.jar
その後、クラスパスで jfxrt.jar の場所を指定する必要なく、アプリを実行できます。
java -jar AudioPlaylist.jar
IDE を使用した JavaFX プログラムのコンパイルと実行
NetBeans
NetBeans 7.2 以降を使用している場合は、JavaFX プロジェクト タイプを作成できます。プラットフォームとして jdk1.7.0_07 を設定すると、JavaFX jfxrt.jar が自動的に検出され、プロジェクトのクラスパスに配置されます。
エクリプス
e(fx) clipse を使用している場合は、JavaFX を検出するためのより優れた機能を備えた最新バージョン (0.0.14+) を使用していることを確認してください。
考え
Intellij Idea 11.1.3 は、jre lib ディレクトリのすべてのファイルをプロジェクトのクラスパスに自動的に追加するため、コンパイル エラーが発生することはありません。この点で Idea の動作は間違っていることに注意してください。実際にこれを行うべきではありませんが、最終的には、アイデアから JavaFX クラスをコンパイルして実行できるという期待される動作になります。
Maven を使用した JavaFX プログラムのビルド
- jfxrt.jar を maven プロジェクトのシステム依存関係にして、パス上で取得します。
- Maven antrunner を使用して、デプロイメント パッケージ化用の javafx ant タスクを実行します。
JavaFX を maven でパッケージ化する例は、このmaven プロジェクトで提供されています。
ビルドに IDE または Maven を使用する場合でも、javafx ant タスクまたは javafxpackager ユーティリティを使用して配信用にアプリをパッケージ化することをお勧めします。これにより、アプリケーションに最も堅牢なデプロイ ソリューションが提供されるはずです。