顯示具有 Java 標籤的文章。 顯示所有文章
顯示具有 Java 標籤的文章。 顯示所有文章

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

2024-11-27

📝 紀錄一下幾個不同 JDK

這邊記錄一下幾個常見的 JDK(Java Development Kit)與其差異

JDK與其下載頁 License 備註
Oracle JDK 有商用限制。
除此之外,JDK 8、11和之後的版本 License有所不同。
詳細請參見 Oracle 的說明
有 Open JDK 不包含的額外功能。
Oracle Open JDK GPLv2 + CPE
BellSoft Liberica JDK GPLv2 + CPE Spring 推薦使用
有提供
  1. Full version 
  2. Standard version 
  3. Lite version 
三種版本的 JDK 可供下載
Microsoft JDK GPLv2 + CPE
Eclipse Temurin™ Open JDK GPLv2 + CPE
OpenLogic Open JDK GPLv2 + CPE 由 Open Logic 所建置的 JDK
內部已經包含了 JavaFX 相關 libraries 了
IBM Semeru Runtime™ GPLv2 + CPE 有特別針對性能進行優化
RedHat GPLv2 + CPE
SAP Machine GPLv2 + CPE 與 Open JDK 的差異可參見官方 wiki

除了上述的幾種以外,其實還有其他像是毕昇 JDK(華為建的)、Dragonwell JDK (阿里巴巴建的)、Kona JDK(騰訊)……等等的,就不列舉了。


我看了一下,有很多公司會特別建 JDK 就是要用在自家公司的服務之中,例如微軟的 JDK 適合部屬在 Azure 上、Red Hat JDK 會和自家平台整合……等等。


2024-11-04

2024-09-11

做 Hibernate envers 設定時遇到的坑

這篇算是延續先前《SpringBoot 使用多個資料庫連線》的狀況

我今天想要使用Hibernate envers來處理資料的版控。

原先我是這樣處理的:

  1. pom.xml 加上library

    <dependency>
    	<groupId>org.hibernate</groupId>
    	<artifactId>hibernate-envers</artifactId>
    </dependency>
  2. application.properties 加上設定

    spring.jpa.properties.hibernate.envers.audit_table_suffix=_rev
    spring.jpa.properties.hibernate.envers.revision_field_name=rev
    spring.jpa.properties.hibernate.envers.revision_type_field_name=revtype
    
  3. Hibernate Entity 加上 @Audit
    import javax.persistence.Entity;
    import javax.persistence.Table;
    
    import org.hibernate.envers.Audited;
    
    @Entity
    @Audit
    @Table(name = "my_entity")
    class MyEntity{
    	// 中略
    }

然而,實際執行時,Hibernate 處理版控資料時,都想要存入 my_entity_AUD,即

insert into `my_entity_AUD` 
# 下略

2024-08-12

Logback 設定

最近在調整自己開發的系統的 log。程式使用 Spring Boot,log 使用 logback。

我的目的是要讓其 log 到一定量就自動壓縮成 .gz檔、每天壓縮。

2024-01-18

Maven 自動 Compile SASS/SCSS (使用 us.hebi.sass plugin)

前一篇文章《Maven 自動 Compile SASS/SCSS (使用 nl.geodienstencentrum.maven plugin)》中提到使用 nl.geodienstencentrum.maven 這個 plugin 可以自動 compile SASS。

但這 plugin 是使用已經淘汰的 Ruby SASS(現在推薦使用 Dart SASS),且經過測試,只能支援到 Java 11(我自己是沒有 Java 12 ~ 16),Java 17(含)以上都會出現 Error。

於是我又另外去找,找到 us.hebi.sass 這個 plugin 。

2024-01-05

Maven 自動 Compile SASS/SCSS (使用 nl.geodienstencentrum.maven plugin)

SASS / SCSS 太強了
而且他還沒有使出全力的樣子
對方就算沒有 @mixin 或是 @include 也會贏
我甚至覺得有點對不起他……

不得不說,SCSS 真的太好用了。

就算沒有 @mixin 或是 @include,光是巢狀架構的處理就夠好用了。

雖然現在 CSS 也開始要支援巢狀寫法(Using CSS nesting - CSS: Cascading Style Sheets | MDN (mozilla.org)),但是現在 CSS 的複雜度都已經媲美 JS 了,還要追加巢狀架構,我真心覺得這些 web 委員會是不是沒事找事做啊。


不提這個,這邊只是要記錄一下,如何在 Java Maven 讓其在 compile / package 時,自動編譯 SASS

2022-10-05

Java 用 Stream 將 List<obj> 變成 Map<key, List<obj>>

例如我手邊有 class Student


class Student{
	private int studentID, teacherID;
	private String studentName;
	public Student (int studentID, int teacherID, String studentName){
		this.studentID = studentID;
		this.teacherID = teacherID;
		this.studentName = studentName;
	}
	
	public int getStudentID(){return studentID;}
	public int getTeacherID(){return teacherID;}
	public String getStudentName(){return studentName;}
	
	public String toString(){
		return String.format("[Student %02d: %s]", studentID, studentName);
	}
	
}

假設我手邊有學生清單( List<Student>)

但我想看每個老師底下有哪些學生,換言之,想將之轉為 Map< int (teacherID), List<Student>>

2022-07-19

使用 jQuery Datatables plugin 時,出現 Bean 錯誤

這是最近在處理 spring MVC 專案時遇到的問題。

這個專案前端使用了 jQuery + Datatable plugin;

而在後端,則是這樣寫(FooBarSearch 是一個 Bean)

@RequestMapping(value="/search")
public @ResponseBody ForBarResultBean search(FooBarSearch search) 

2022-06-15

如何讓 tomcat 執行 php

因為某些緣故,需要有個 wordpress 環境,為了方便,所以想說本來電腦就有 tomcat 就看看能不能用 tomcat 直接執行 php。

結果上網查了查,還真的有辦法,在此紀錄一下: