2026-03-12

JavaFX 編譯成可執行程式

以前有寫過接手 JavaFX 專案的筆記。這篇則是從 0 建置 JavaFX 後的筆記紀錄。

我這次使用以下面的指令建立 javaFX 專案(windows 的話要把\改成^):

mvn archetype:generate \
    -DarchetypeGroupId=org.openjfx \
    -DarchetypeArtifactId=javafx-archetype-simple \
    -DarchetypeVersion=0.0.6 \
    -DgroupId=com.example \
    -DartifactId=jfxsample \
    -Dversion=0.0.0-SNAPSHOT \
    -Djavafx-version=17.0.14

生出來的專案架構如下:

│  pom.xml
│
└─src
    └─main
        └─java
            │  module-info.java
            │
            └─com
                └─example
                        App.java
                        SystemInfo.java

如果我執行 mvn javafx:run,可以啟動專案。

但是 mvn package的話,執行 java -jar target/jfxsample-0.0.0-SNAPSHOT.jar會出現以下錯誤訊息

Error: Unable to access jarfile target/jfxsample-0.0.0-SNAPSHOT.jar

如果你的 jre 是中文版,錯誤訊息則會是

target/jfxsample-0.0.0-SNAPSHOT.jar 中沒有主要資訊清單屬性

2026-02-23

更新 maven 專案版本

可以直接使用指令來更新版本

mvn versions:set -DnewVersion={ 版本號 }

例如我原本是

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example.foo</groupId>
  <artifactId>bar-app</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>bar-app</name>
  <!-- 中略 -->
</project>

執行 mvn versions:set -DnewVersion=1.0.3-SNAPSHOT,就會變成

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example.foo</groupId>
  <artifactId>bar-app</artifactId>
  <version>1.0.3-SNAPSHOT</version> <!-- 這邊更新了 -->

  <name>bar-app</name>
  <!-- 中略 -->
</project>

2026-02-10

2026-01-22

Oracle 的特殊 SQL 紀錄

最近因為工作需要,去接觸老系統的資料庫

該資料庫是 Oracle 11,裡面有很多特殊的 SQL 語法。

在此紀錄一下

2026-01-09

ebiten 在 linux 編譯的坑

我今天有個 golang 專案使用 🦐ebiten

這個專案在 windows 上測試、編譯都好好的。

結果到了 linux 環境就沒法編譯了。

2026-01-08

ERR_UNSAFE_PORT

先前我在開發軟體時,我設定讓他以 localhost:6000 開啟,結果出現 ERR_UNSAFE_PORT 錯誤,然而用 cURL 卻又一切正常。

經查詢,這是因為 6000 在瀏覽器中被列為 unsafe port。

這個 port 是 linux X11 桌面系統所用的,所以瀏覽器將之限制了。

2025-12-23

紀錄:golang 如何為編譯出來的執行檔加上圖示

參考《使用rsrc给golang打包的exe文件添加程序图标》

Mage 筆記:Data Integration pipeline 轉換欄位名稱

紀錄一下如何在 Data Integration pipeline 中,使用 Transform 轉換欄位名稱。

例如這是我原始 Table

UU01 UU02 UU03
51982064-26f7-435c-a935-bf522ebda29d 王曉明 1
91d49f51-495d-4d98-833e-a1e090475195 張阿榮 0
251e5455-c061-4836-b2d7-ee40b7da4f54 陳曉嵐 1
0295db65-b2e3-40ac-b2ec-24798703df1b 陳大華 2

而我想轉成:

id name status
51982064-26f7-435c-a935-bf522ebda29d 王曉明 1
91d49f51-495d-4d98-833e-a1e090475195 張阿榮 0
251e5455-c061-4836-b2d7-ee40b7da4f54 陳曉嵐 1
0295db65-b2e3-40ac-b2ec-24798703df1b 陳大華 2

Transform

要進行以下修改,要使用 transform

code 如下


from mage_ai.data_cleaner.transformer_actions.base import BaseAction
from mage_ai.data_cleaner.transformer_actions.constants import ActionType, Axis
from mage_ai.data_cleaner.transformer_actions.utils import build_transformer_action
from pandas import DataFrame

if 'transformer' not in globals():
    from mage_ai.data_preparation.decorators import transformer
if 'test' not in globals():
    from mage_ai.data_preparation.decorators import test


@transformer
def transform(df: DataFrame, *args, **kwargs) -> DataFrame: 
    """
    欄位轉換,這段程式會根據 mapping 變數的 key / value 轉換匯出的欄位
    """

    mapping = {
        "UU01": "id",
        "UU02": "name",
        "UU03": "status"
    }
    
    # 實際執行 rename;不存在的欄位會被忽略
    df_renamed = df.rename(columns=mapping)

    return df_renamed



@test
def test_output(output, *args) -> None:
    """
    Template code for testing the output of the block.
    """
    assert output is not None, 'The output is undefined'

執行完畢後,就會匯出欄位名稱是 id / name / status

2025-12-22

Mage 筆記:Data Integration pipeline 轉換欄位值

紀錄一下如何在 Data Integration pipeline 中,使用 Transform 轉換欄位值。

例如現在我有 Table 紀錄員工狀態(1:在職;0:離職;2:留職停薪)

id name status
51982064-26f7-435c-a935-bf522ebda29d 王曉明 1
91d49f51-495d-4d98-833e-a1e090475195 張阿榮 0
251e5455-c061-4836-b2d7-ee40b7da4f54 陳曉嵐 1
0295db65-b2e3-40ac-b2ec-24798703df1b 陳大華 2

想讓匯出的 table 的 status 變成「在職/離職/留職停薪」

2025-12-18

Tauri Plugin Bug: Uncaught TypeError: Failed to resolve module specifier

這是我在開發 Tauri APP 時遇到的問題。以下是我的錯誤訊息:

Uncaught TypeError: Failed to resolve module specifier "@tauri-apps/plugin-store". Relative references must start with either "/", "./", or "../".

2025-12-04

Mage AI 數據整理:資料複製

紀錄一下Mage這款工具的使用。

這工具是因為公司要做 ETL (Extract, Transform, Load),所以才開始使用的工具。