LoginSignup
0
0

More than 1 year has passed since last update.

【コタツ級】私がJavaFX 11とMavenから実行可能なjarファイルを作れるようになるまで【丸パクリ】

Last updated at Posted at 2023-02-10

はじめに

これまて長らくJava 1.8とその付属(?)のFXをNetBeansで使っていましたが、趨勢的に11に上げようとするも配布用のJarを作ることは出来ませんでした。
私はMavenについて知識が無いので勉強するか使わなければ状況も変わるのかもしれないのですが、そうも行かないので困っていました。
コマンドラインでじぇいりん君とやらを操作すれば出来るのかもしれませんがネットの大体の記事はLinux前提で書かれていたりしてWindows上でのデスクトップアプリを作ろうとする私の目的と馴染まなかったり、コーディング以外はGUIで操作できるのがIDEの利点と考えているのでわざわざ黒い画面を出すのもどうよという気分で腐っていました。
そして一月半くらい色々調べても分からなかったので諦めて1.8を使い続けようかと断念しかけていたのですが、どうにか出来るようになりました。

使用環境

Product Version: Apache NetBeans IDE 16
Java: 17.0.3.1; Java HotSpot(TM) 64-Bit Server VM 17.0.3.1+2-LTS-6
Runtime: Java(TM) SE Runtime Environment 17.0.3.1+2-LTS-6
System: Windows 10 version 10.0 running on amd64; MS932; ja_JP (nb)

元ネタ

このYouTubeです。

これを見ればもうこの記事を見る必要はありません。
タイトルからお察しの通り、これはこの動画通りに私がやった手順を記録しただけで何のオリジナル要素も無いパクリ記事です。
しかし皆様の利便性の向上が見込めるという大義名分のもとにご紹介させて頂くことにしました。(Mavenだけに)

実践

1.プロジェクトを新規に作るところから始めました
image.png

2.普通にFXML付きのプロジェクトを選びます。
image.png

3.プロジェクト名を変更します。
image.png
この後に出てきますがプロジェクトのプロパティで私の環境では初めからJava11の表示になっているのでここで表示されているAdditional Creation PropertiesのValueはその影響を受けるかもしれません。
このあたりは私には分からないので勘弁して下さい。

4.ビルドに成功しました。
image.png
さくさく進めます。(SUCCESSだけに)

5.プロジェクトのタグに出現しているのを確認
image.png

6.ここのSource/Binary/Formatは希望通り初めから11になっているのですが、恐らく以前別のプロジェクトを作った時の設定を引き継ぐのでしょうか。
image.png
そして私はここがどういう効力なのかは分かっていませんが、初心者なのでイチイチ気にしません。(11だけに)
3の工程に影響がありましたら済みません。

7.ここは11を選びます。
image.png
なんで11なんだ17でやればいいじゃ無いかと思われるかもしれませんが個人的に諸般の事情があるのです。
あとJava Plathomeの追加の仕方は各自調べて下さい。
そして面倒くさい説明を省くのはズルイなどと言わないで下さい。(Zuluだけに…すみません、もう止めます)

8.素の状態のまま一旦起動してみます
image.png

9.IDE内での起動には成功します
image.png
ここからが正念場です。

10.App.javaと同じパッケージにメインクラスを作成します
image.png

11.クラス名はMainにします
image.png

12.mainメソッドの中身を書きます。
image.png
メインクラスではなく普通のクラスを作ってしまった方はここでメソッドの外側ごと書けば大丈夫です。

13.念の為に自作のMain.javaから起動できるか確認します。
image.png

14.起動できました。
image.png

15.今度はProject Files配下のpom.xmlを開き最下端付近の</plugins>を確認します
image.png

16.ここで冒頭で紹介したYouTubeのページを開き、概要欄の「もっと見る」をクリックして展開された中にあるリンクをクリックします。
image.png
だから初めからビデオだけ見てればいいだけの話なのですが…申し訳ないです。

17.ここにある内容をそっくり15のpom.xmlに追記挿入するのですが、同じページで疑義が呈されていました

なんでもバージョンが欠けているのでそれを入れればうまくいくよとの事。

EpicConOwO commented on Mar 12, 2022 •
i did some digging, for me the problem was "version" tag was missing, adding version tag fixed the issue for me.

端折って後の提案の方をコピペしました(ここもそっくり引用しています)

       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-shade-plugin</artifactId>
           <version>3.2.4</version>
           <executions>
               <execution>
                   <goals>
                       <goal>shade</goal>
                   </goals>
                   <configuration>
                       <shadedArtifactAttached>true</shadedArtifactAttached>
                       <transformers>
                           <transformer implementation=
                                                "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                               <mainClass>com.game.hangman.Main</mainClass>
                           </transformer>
                       </transformers>
                   </configuration>
               </execution>
           </executions>
       </plugin>

18.コピペが終わった状態
image.png
</plugins>の手前に入れ込む形ですね。

19.<mainClass>のタグのクラス名をご自身のご作成状況にあわせて変更します
image.png

20.プロジェクトを右クリックしRun Maven->Goals..を選択
image.png

21.Goalsにcleanと入力
image.png

22.補完機能の提示を無視しcleanだけでOKを押下
image.png
余りにも無知でclean:cleanと何が違うのか分からないですが、これを選択すると駄目でした。

23.一旦起動します。
image.png
図は省略しますが、普通に起動するはずです。

24.プロジェクトを右クリックしRun Maven->Goals..を再び選択
image.png

25.Goalsにinstallと入力
image.png

26.ここでも補完機能の提案は選択せず、OKを押下。
image.png

このあたりで赤字で色々と表示されるのですが私は英語が全く分からないので勝てば官軍で進めます。

27.targetフォルダに二つのjarが出来ているはずです。
image.png
-shadedと付いている方をダブルクリックします。
(万が一のぬか喜びを避ける為にIDEを先に終了させておいた方が良いでしょう)

28.ゴーーーーーーーーーーーーーーーーーーーール!

image.png
(Goalsだけに…)

愚痴

組めて、走って、配れる。
そんな当たり前の喜びもAIに奪われる日はもうすぐなのでしょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0