java11を使用してjavafxアプリケーションをビルドおよびデプロイします

18
humazed 2018-11-24 06:19.

私はの手順に従いました https://blog.jetbrains.com/idea/2013/03/packaging-javafx-2-applications-in-intellij-idea-121/

しかし、最後のステップのようにアーティファクトをビルドしようとすると、このエラーが発生します

エラー:JavaFXパッケージャー:アーティファクトをビルドできません-fx:deployはこのJDKでは使用できません

JavaFXがjava11から削除されたことを知っています。私の質問は、.jarまたはを構築するために何をすべきかです。.exe

がここにあります https://github.com/humazed/fx01 迅速なテストのため。

4 answers

10
Barosanu240 2019-09-01 06:47.

JavafX JARエクスポートオプションの使用は、Intelijでは機能しなくなりました。「依存関係のあるJar-Fromモジュール」を使用して通常のjarとしてエクスポートできます。これにより有効なJarがエクスポートされますが、それを実行するには、javaFxパスとモジュールをコマンドに追加する必要があります。

jarを取得すると、runコマンドは次のようになります。

java --module-path PATH_TO_YOUR_JAVAFX_LIB_FOLDER --add-modules javafx.controls,javafx.fxml,javafx.graphics,javafx.web -jar yourJar.jar

私はこれでyoutubeチュートリアルを作りました: https://youtu.be/HGHu-SzL-5E

6
user3121518 2020-06-06 14:25.

次の方法は、IntelliJを使用するUbuntu上のOpenJDK11およびOpenJFX11java -jar filename.jarで機能し、WindowsおよびLinuxでのみ実行できるjarを正常に作成します。

私の主な方法はアプリケーションを拡張します...

public class Main extends Application {

したがって、最初にStart.javaのような新しいJavaクラスを作成します。これは元のMainメソッドにリンクします。

public class Start {
    public static void main(String[] args){
        Main.main(args);
    }
}

次に、.jarファイルを作成します。

ファイル>プロジェクト構造>アーティファクト

+> JARの選択>依存関係のあるモジュールから

メインクラスの場合、Start.javaを選択し、[OK]をクリックします

javafx jarは自動的に抽出される必要があります(手動で追加しない場合)

[適用]と[OK]をクリックします

ビルド>アーティファクトのビルド>ビルド

作成されたファイルは、 java -jar filename.jar

2
Ioannis Panteleakis 2018-11-25 13:53.

残念ながら、パッケージャーがJFX SDKから削除されたため、この方法でJFX11を使用してjarをビルドすることはできません。将来のリリース(おそらく12)で実装されることが期待されています。詳細については、こちらをお読みください。

https://youtrack.jetbrains.com/issue/IDEA-200721 次の2つのリンクが含まれています。

https://bugs.openjdk.java.net/browse/JDK-8212780

https://openjdk.java.net/jeps/343

一時的な解決策として、必要なパッケージャーがまだ含まれているバージョン10を使用/ダウングレードするだけです。

1
matt_frangakis 2020-04-24 01:25.

Barosanu240が回答したように、IntelliJは現在JavaFX Jarsをエクスポートできませんが、その側面での開発は行われています。さらに、彼のYouTubeビデオでの彼の解決策は完全にうまく機能しているので、投稿していただきありがとうございます。

コマンドラインを使用せずにJARファイルを開くには、アプリケーションは基本的に、上記の追加のJVM引数を使用して自身を再起動する必要があります。面倒ですが、これは次の方法で実行できます。

アプリケーションが現在のディレクトリでexist.txtという名前の一時ファイルを検索するとします。このファイルが存在しない場合は、ファイルを作成し、CMDにコマンドを送信して、追加のJVM引数を使用してそれ自体の別のインスタンスを開始してから閉じます。次に、新しく開かれたインスタンスは、exist.txtの存在を確認し、現在存在してます。したがって、UIが開いていて表示されていることがわかります。次に、exist.txtを削除し、アプリケーションは通常どおり続行します。

この方法論は、次のように、明らかに厄介ですが、try / catchブロックを使用して実行できます。

try (FileReader fileRead = new FileReader(new File(Paths.get("").toAbsolutePath().toString() + FileSystems.getDefault().getSeparator() +"exist.txt"))) {
        //If the code gets this far, the file exists. Therefore, the UI is open and visible. The file can now be deleted, for the next time the application starts.

        fileReader.close();
        File file = new File(Paths.get("").toAbsolutePath().toString() + FileSystems.getDefault().getSeparator() +"exist.txt");
        boolean result = file.delete();
        if (result) {
            System.out.println("File deleted successfully; starting update service.");
        } else {
            System.out.println("File was not deleted successfully - please delete exist.txt.");
        }

    } catch (IOException e) {
        //The file does not exist because an exception was generated. Therefore, create the file, and restart the application using CMD with the additional arguments required
        File file = new File(Paths.get("").toAbsolutePath().toString() + FileSystems.getDefault().getSeparator() +"exist.txt");
        try {
            boolean result = file.createNewFile();
            if (result) {
                //Start a new instance of this application
                final String command = "cmd /c start cmd.exe /k java --module-path PATH_TO_YOUR_JAVAFX_LIB_FOLDER --add-modules javafx.controls,javafx.fxml,javafx.graphics,javafx.web -jar yourJar.jar;
                Runtime.getRuntime().exec(command);
            } else {
                System.out.println("Unable to create exist.txt. Application will close.");
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        //Now that a new file has been created and a command sent to CMD, exit this instance
        System.exit(-1);
    }

//The rest of your application's code

JavaFXlibフォルダーへのパスにスペースを含めることはできません。上記のコードは、アプリケーションのmainメソッドのlaunch(args)行の前にある必要があります。try / catchを使用せずにこれと同じ動作を実現するためのより良い方法はおそらくありますが(例外を意図的に呼び出すことは良い習慣ではないため)、このソリューションは当面は問題なく機能します。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ジョー・バロウロー対ウェイド事件の転覆に対応するNFLは、言葉を言わないことで、腹立たしいが予測可能なPRの結果でした。

別の日、別のヒンジのないLIV記者会見

別の日、別のヒンジのないLIV記者会見

(lから)パット・ペレス、ブルックス・ケプカ、パトリック・リードサウジアラビアのLIVゴルフリーグのさらに別の信じられないほどの記者会見で、スポーツのファンはブルックス・ケプカからでたらめな吐き気と質問回避の驚異的なマスタークラスを受けました。パトリックリード、ブライソンデシャンボー、パットペレス、最近のPGAツアーの脱北者。

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

レッドダガーとマーベルさんがチームを組んでいます。

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

暗号業界最大の沈没船の1つであるスリーアローズキャピタルは、ついにその悲惨さから解放されています。火曜日に、不良債権ヘッジファンドは、債権者からの返済を要求する訴訟の高まりに応えて、バージンアイランド裁判所によって清算を命じられました彼らが3ACに行ったローン。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

Suffragettes Indicam #3: Junho

Suffragettes Indicam #3: Junho

Mais um mês se findando — e metade do ano de 2022 já passou. Sabe o que isso significa? Não, não é hora de verificar se você está cumprindo com suas resoluções de Ano Novo.

多元宇宙—Junø

多元宇宙—Junø

チェーン間アカウントがJunoに登場します。異なるブロックチェーン間でスマートコントラクトの構成可能性と真の相互運用性を提供します。

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

1.ドラマを見た後、起業する考えはありますか?あなたのビジネスはボトルネックに遭遇しましたか?方向性がなくてわからない場合は、ドラマを追いかけて行くことを心からお勧めします。(?)ブラフではなく、最も完璧なビジネス例を隠すドラマがあります。2.ブレイキング・バッドとその弁護士ドラマ「ブレイキング・バッド」を見た友人たちは、演劇の中で、穏やかな表情で、弁護士のソウル・グッドマンに深く感銘を受けなければなりません。口を開けて、感覚の弱い傭兵の性格を持っています。道徳の面で、サル・グッドマンは無意識のうちに劇に欠かせない役割を果たし、彼自身のシリーズ「絶望的な弁護士」(ベター・コール・ソール)を生み出しました。ウェントウのテキストとビデオは、劇中のソウル・グッドマンのテレビコマーシャルです。製品(サービス)、競争戦略、市場ポジショニング、ブランド名、ターゲット顧客グループ、コミュニケーション軸から広告まで、サル・グッドマンの役割のビジネス設定は、「最低」と見なすことができる超超超超超超完全です。ブランドコミュニケーションのコスト」「変化」のモデル。なぜ?私の分析をご覧ください。3.ソウル・グッドマンの「事業戦略」1.基本情報ブランド名:Saul Goodman製品:法律相談サービス対象顧客:麻薬中毒、飲酒運転、事故など。法律知識の欠如は、一般的に公立弁護士にしか余裕がなく、真面目な弁護士も「特別な法律を持つ消費者」を避けます。恐れてはいけない「​​ニーズ」。コミュニケーションの主軸:この国のすべての男性、女性、子供は有罪判決を受けるまで無実だと思います。地域:アルバカーキ市スローガン:Thrallに電話したほうがいいです!(ベター・コール・ソール)広告:2つの可能性のある犯罪状況をシミュレートします+サウルの主張+サウルのスローガン2をより適切に呼び出します。

メインネットガイド— Arbitrum Odyssey Week 2

メインネットガイド— Arbitrum Odyssey Week 2

最新のアップデートを受け取るために私たちに従ってください。ニュースレター:https://www。

Language