iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
Software Development

玩轉ABCL Lisp!用奇怪偏門的方式學習JavaFX系列 第 8

lesson -7: 怎麼準備ABCL環境?Hello, ABCL

  • 分享至 

  • xImage
  •  

準備ABCL執行環境

要使用ABCL,首先要先準備JAVA運行時環境(JRE, Java Runtime)。如果是使用Windwos平臺的,可以參考Windows怎麼安裝JAVA環境?;Linux平臺的可以參考Linux怎麼安裝JAVA環境?

然後很簡單的只要到ABCL官網下載主程式再解壓縮即可,abcl-bin-1.9.2.tar.gzabcl-bin-1.9.2.zip 都可以,通常Windows因爲沒有tar工具,所以選擇zip檔案下載;Linux則可能沒有unzip工具,可以選擇tar檔案下載。但不要選擇到abcl-contrib-1.9.2.jar,這只包含一些開發用的Package,並不包含可運行的ABCL。

開啓終端機,切換到解壓縮後的目錄,然後輸入java -jar abcl.jar,就可以進入到REPL的交互式文字界面環境裡:

$ java -jar abcl.jar 
Failed to introspect virtual threading methods: java.lang.reflect.InaccessimonitorbleObjectException: Unable to make public java.lang.Thread java.lang.ThreadBuilders$VirtualThreadFactory.newThread(java.lang.Runnable) accessible: module java.base does not "opens java.lang" to unnamed module @7927943b
Armed Bear Common Lisp 1.9.2
Java 25.0.4 Ubuntu
OpenJDK 64-Bit Server VM
Low-level initialization completed in 0.487 seconds.
Startup completed in 2.717 seconds.
Loading /home/user/.abclrc completed in 19.186 seconds.
Type ":help" for a list of available commands.
CL-USER(1):

在我執行的訊息中有 Failed to introspect virtual threading methods: java.lang.reflect.InaccessibleObjectException: Unable to make public java.lang.Thread java.lang.ThreadBuilders$VirtualThreadFactory.newThread(java.lang.Runnable) accessible: module java.base does not "opens java.lang" to unnamed module @7927943b錯誤訊息,可以在啓動時增加--add-opens java.base/java.lang=ALL-UNNAMED,變成java --add-opens java.base/java.lang=ALL-UNNAMED -jar abcl.jar

在Linux,可以將指令設置成別名:

alias abcl="java -jar <abcl.jar檔案位置>"

至於Windows上,我則會在任意%PATH%位置增加一份批次檔abcl.bat:

java -jar <abcl.jar檔案位置> %*

Hello ABCL

在REPL環境,可以直接輸入"Hello ABCL"(有雙引號),或是使用#'print函式(print "Hello ABCL"),更正式的做法是(format t "Hello ABCL")。所以對於「Hello ABCL」有這麼以下幾種做法:

  • "Hello ABCL"
  • (print "Hello ABCL")
  • (format t "Hello ABCL")

接著輸入(quit)(exit)離開REPL環境。你可以將上述程式碼儲存成hello-abcl.lisp的純文字檔案,然後輸入abcl --load hello-abcl.lisp --eval '(quit)'去執行。不過第一種做法在RELP顯式的其實是「返回值」,而非輸出結果,因此不會顯示「Hello ABCL」

可以進一步將程式修改成:

(defvar *name*)

(format t "What's your name ?~%> ")
(finish-output)

(setf *name* (read-line))

(format t "Hello, ~A~%" *name*)

這段程式會詢問使用者的名字,並對其打招呼。

$ abcl --noinform --load hello-abcl.lisp --eval '(quit)'
What's your name ?
> lagagain
Hello, lagagain

要使用ABCL有多麼簡單?

  1. 準備好JAVA運行環境
  2. 下載abcl.jar
  3. 執行
  4. (完成)

現在可以直接把上面的互動程式存成hello-abcl.lisp,並執行:

abcl --noinform --load hello-abcl.lisp --eval '(quit)'

能看到程式詢問名字並印出問候語,就代表ABCL執行環境已經準備完成。下一篇將從另一個熟悉的起點開始,使用JavaFX完成第一個視窗程式:Hello FX。


上一篇
lesson -6: 多版本JAVA環境該如何切換?
系列文
玩轉ABCL Lisp!用奇怪偏門的方式學習JavaFX8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言