私が読んだところはどこでも、Java 7u7の時点で、JavaFX2はJREとJDKにバンドルされています。そのため、Eclipseを実行すると、「インポートjavafxを解決できない」と表示される理由がわかりません。
他にJDKまたはJREをインストールしていませんが7u9ですが、EclipseからJavaFX2を表示できないのはなぜですか?
どうもありがとう :)
残念ながら、jdk7u9の場合、新しいJavaプロジェクトを作成するときに、Eclipseはディレクトリからプロジェクトビルドパスライブラリにjfxrt.jar
ファイルを追加しません。jre\lib
手動で行う必要があります。または、e(fx)clipseプラグインをEclipseにインストールすると、JavaFXの開発が容易になります:)
Eclipseは、JRE 7u9のデフォルトのブートクラスパス(含まれないjfxrt.jar
)のデフォルト設定に従います。将来のJREバージョンはブートクラスパスに配置されるため、プロジェクトビルドパスライブラリにファイルをjfxrt.jar
手動で追加する必要はありません。jfxrt.jar
このJRE機能を追跡できます。
プロジェクトビルドパスに追加jfxrt.jar
すると、Eclipseがそれを見つけて、Eclipse内からコードを開発および実行できるようになります。jfxrt.jar
ただし、ソフトウェアをデプロイすると、クラスパスにも配置しない限り、ソフトウェアを見つけることができなくなります。jdk
/の場所を見つけて、jre
内部で。の場所を検索する必要があるため、これは面倒になりますjfxrt.jar
。
私の理解では、長期的な計画は、内jfxrt.jar
のフォルダーからlib
フォルダーに移動するjre
ことlib/ext
です。これにより、クラスパスに何かを追加しなくても、デフォルトで見つかった場所に配置されます。残念ながら、Java8がリリースされる前にこれが発生する可能性はほとんどありません。
javafxpackager
一方、最も簡単な解決策は、ツールではなく、バンドルされたツールを使用してjarファイルを作成することjar
です。ベースのソリューションもありますがant
、私はそれに精通していません。パッケージャはjarファイルを作成し、jfxrt.jarを検出して実行時にアプリのクラスパスに動的に追加するランチャークラスを挿入します。また、jre
またはインストールされjavafx
ているものが古すぎる場合は文句を言い、ユーザーに新しいバージョンをダウンロードするように促します。次に、コマンドラインで指定したクラスを介してアプリケーションを呼び出します。(通常、main()
メソッドを持つクラス)。
これは、ネイティブjavafxアプリケーションとプレーンな古いSwingアプリケーションの両方で機能します。別のClassPathエントリなど、jarファイルのマニフェストに余分なものがある場合は、コマンドラインでそれを指定して、新しいjarファイルに含めることができます。