PROGRAMMING
Java
- IntelliJ.Gradle.JavaFX(6) プラグイン org.beryx.jlink を使ってみる
- IntelliJ.Gradle.JavaFX(5) NSISでインストーラーを作る
- IntelliJ.Gradle.JavaFX(4) exewrapで実行可能jarをexe化する
- IntelliJ.Gradle.JavaFX(3) Jlink でカスタム JRE を作る
- IntelliJ.Gradle.JavaFX(2) すべての依存対象を含んだ Fatjar を作る
- IntelliJ.Gradle.JavaFX(1) アプリケーションを作る
- javaのコンパイルと実行
- イメージを回転する
- Exif情報を簡単に取得できるライブラリ
- 高画質で画像縮小
- JDBCによるデータベース操作
javascript
- ページャーを作る(簡易版)
- ページャーを作る 4/4
(クロスブラウザ対策)
(ページャー表示用メソッド)
(ページャーの使い方) - ページャーを作る 3/4
(イベント登録) - ページャーを作る 2/4
(スタイルの設定) - ページャーを作る 1/4
(ページャー用関数を準備)
(各要素を生成) - 自作カレンダーを作る 6/6
(11.~14.各種メソッド)
(15.簡単な使い方) - 自作カレンダーを作る 5/6
(09.祝休日の判定)
(10.閏年の判定) - 自作カレンダーを作る 4/6
(08.イベントの設定) - 自作カレンダーを作る 3/6
(07.スタイルの設定) - 自作カレンダーを作る 2/6
(05.カレンダーのマスのみ作成)
(06.各マスへ年月・日付を埋め込み) - 自作カレンダーを作る 1/6
(01.カレンダーの基を準備)
(02.各月の日数や年月日の区切り文字)
(03.前月・次月指定時の処理)
(04.前月・次月部分の年月を算出) - JS-Image-Resizerを使って画像を高画質で縮小
- ファイルを作成しローカルに保存
- モーダルウィンドウをクラス化
- ストップウォッチを作る
- XMLHttpRequest Lebel2を試してみる
- jQuery:Tableで親・子・兄弟要素を取得
- 文字列をセパレータ文字で分割し配列で返す関数
- forループのカウンタを使用している関数の定義
- クロージャの使いどころ
- JSONPでクロスドメイン
- AjaxでJSON形式のデータを扱う
- jsファイルからjsファイルを呼び出す
- jQuery:モーダルウィンドウを作ってみる
CSS
- フォルダ構成をCSSで見やすくする
- シンタックスハイライトPrismのカスタマイズ
- リスト(li)を中央に配置する
- ブロックレベル要素全体をリンクにする
- 実践と点線の交わり部分のギザギザをすっきりさせる
PHP
IntelliJ.Gradle.JavaFX (6) プラグイン org.beryx.jlink を使ってみる
ライブラリなど全てを含んだ Fatjar を作ったり、それを動かすためのカスタムランタイムも作りました。
その一連の作業を一発でやってくれるプラグインがありました。
それを試してみます。テスト用プロジェクトはfxJlinkです。
開発環境
IntelliJ IDEA 2021.2.2 (Community Edition)
jdk-15.0.1
javafx-sdk-15.0.1
javafx-jmods-15.0.1
プラグイン org.beryx.jlink を使ってみる
build.gradleにプラグインorg.beryx.jlinkを追加した。
plugins {
id 'java'
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.10'
id "org.beryx.jlink" version "2.24.1"
}
すると、右側のgradleツールのTasks → build には jlink の他にも jpackage のタスクもできていた。
Tasks → build → jlink を実行する
実行してしばらくすると、buildフォルダにimageフォルダができた。その中のbinフォルダ内にfxJlink.batができている。
それがアプリケーションランチャーのようだ。
バッチファイルをクリックすると、DOS窓に続きアプリケーションが立ち上がる。
ところが、QRコード表示のボタンをクリックするとエラーとなる。
IntelliJ.Gradle.JavaFX (3) plugin Jlink でカスタム JRE を作るにも書いたキャラクタセットのエラーだ。
そこで、module-info.javaにjdk.charsetsを追加した。
module com.fxjlink {
requires javafx.controls;
requires javafx.fxml;
requires com.google.zxing;
requires com.google.zxing.javase;
requires java.desktop;
requires jdk.charsets; // jdepsの依存に出てこない
opens com.fxjlink to javafx.fxml;
exports com.fxjlink;
}
今度は、ボタンをクリックで問題なくQRコードが表示された。
Fatjarやカスタムランタイムを作る必要もなく、楽だ。
ただ、コマンドプロンプトの開きっぱなしがどうも気になる。
コマンドプロンプトを開かずにアプリを立ち上げるVBSを作る
jlinkタスクで出来上がったimageフォルダに、コマンドプロンプトを開かず立ち上げるVBSを置いた。
- image(ここをアプリ名fxJlinkに替えて配布すると良い)
- bin
- conf
- include
- legal
- lib
- fxJlink.vbs
- release
fxJlink.vbs
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c bin\fxJlink.bat", vbhide
fxJlink.vbs をクリックでコマンドプロンプト無しで、直に開くことができた。
Tasks → build → jpackage は実行できるか?
jpackageも試してみた。
順調に進んだかと思ったが、最後のところで jpackageimage のエラーが出てbuildフォルダには何も変化が無い。
新たにtestJlinkというプロジェクトを作り、intellijで出来たコードのまま、
build.gradleにプラグインorg.beryx.jlinkを追加しただけで実行してみた。
すると、下記のようなエラーがでたが、buildフォルダにjpackageフォルダができた。
中にはtestJlink.exeができていて、クリックするとすんなりアプリが立ち上がる。
SExecution failed for task ':jpackageImage'.
> Process 'command 'C:\Java\jdk-15.0.1/bin/jpackage.exe'' finished with non-zero exit value 1
- testJlink
- app
- runtime
- testJlink.exe
- testJlink.ico
因みに、出来上がったtextJlink.exeのアイコンはjavaアプリ既定のアイコンになっている。
試行錯誤して、build.gradleにjlinkタスクのオプション(下記)を追加したら、好みのアイコンに変更することができた。
jlink {
jpackage {
if (org.gradle.internal.os.OperatingSystem.current().windows) {
// アプリケーションアイコンを指定。拡張子がicoのもの。
imageOptions = ['--icon', 'src/main/resources/com/testJlink/apple.ico']
imageOptions += ['--vendor', 'mken']
}
}
}
プラグイン org.beryx.jlink は楽で良い。
jpackage がエラーも無く使えれば VBS も作る必要がない。
できれば、そうなって欲しいものだ。