2012-09-02 12 views
7

私はjavafxアプリケーションをjarファイルに変換するために一日中努力してきました。私はJava 1.7 update 7を使用しています。Intellij Javafxアーティファクト - あなたはどうやってそれを作っていますか?

オラクルにはsome informationがありますが、それはまるでどこにでも散っているようです。 IntelliJはほとんど仕事をしているが、私は次のエラーを取得する:私はjfxrt.jarがどこにあるか私は私のクラスパス情報には、このjarファイルを追加した場合...のjavaを伝える必要があると言っているようだ

java.lang.NoClassDefFoundError: javafx/application/Application 

でjfxrt.jarを含めるように持っている奇妙なよう

Could not find or load main class com.downloadpinterest.code.Main 

:IntelliJのマニフェストビルド - >アーティファクト - - - は>出力レイアウト]タブ>はクラスパスは、その後、私は別のエラーを取得し、CTRL +シフト+ ALT +はS私のクラスパスは...

私はAntスクリプトも作成しようとしましたが、IntelliJは90私は、なぜjfxrt.jarをインクルードする必要があるのか​​、メインクラスが見つからない理由を理解するために少しの助けが必要です(クラスパスに何とか追加する必要があると思います?)。

何が起こっているのか誰かが私に手がかりを与えることができますか?これまでは基本的なGUIはありましたが、JavaFXは人生を複雑にしているようです。

答えて

4

あなたの前提は正しいです。クラスパスにJavaFXを追加する必要があります。
[JDK]/jre/lib/jfxrt.jarにあります。

は、あなたが、その後、この Oracle guide または に示されているアプリケーション、作るのJava 7の更新6アプリの要件との同梱のアプリケーションのできるだけ早い時期にクラスパスに [JAVA_HOME]/lib/jfxrt.jarを追加することができ、実行時のJavaFXを提供します。

最初のオプションは、より多くの作業を意味しますが、すべてのユーザーが同じバージョンのライブラリを持っていることを絶対に確認します。また、JREも一緒にバンドルすることができます。 2番目のバージョンでは、この確実性は保証されていませんが、実現が容易です。

2番目のオプションのバリエーションとして、実際にJREをバンドルすることが可能な場合は、配布物にバンドルして、シェルスクリプト/バッチファイル/実行可能ファイルラッパーを組み込んでプログラムはそれを使用します。 そのようにすれば、オプションIIからの難易度が適度に向上して、オプションIからのすべての確実性が得られます。

+0

Intellijは、クラスパスを持つjarマニフェストに単に行を追加するだけです(私のjarファイルにjfxrtはバンドルされていません)。 これは、他のユーザーが自分のプログラムをダウンロードして使用しようとしたときに問題になるようです。つまり、Mac、Linux、Windowsなどの人がいて、jfxrt.jarのパスが違う人がいます。とにかくこの問題を解決するために知っていますか? –

+0

私はそれをカバーする答えを更新しました。 –

+0

ありがとうございました。私はantスクリプトを作成することしかできなかったので、どこにでも完全なantサンプルがあれば、oracleに尋ねました。もし私が見つけたら、私は1つを掲示してくれます。 –

4

私は同じ問題を抱えていました。 しかし、私はこのブログの記事を見つけました:Packaging JavaFX 2 Applications in IntelliJ IDEA 12.1どうやらIntelliJのは、特別な「JavaFXのアプリケーション」アーティファクトを生産する能力を持っているのIntelliJで12.1

それを行う方法を示しています。 jarファイル内に必要なものすべてが自動的にバンドルされます。

関連する問題