Eclipse Jetty — Windows / Linux 裡面的 Web Server

MIS2000 Lab.
6 min readApr 16, 2024

--

在嵌入式系統 embedded 裡面(如Android),如果要架設一個簡單的網頁 / Web Server該怎麼做呢?

首先 請看一下原廠說明文件

https://github.com/jetty/jetty.project

https://eclipse.dev/jetty/documentation/jetty-12/operations-guide/index.html (有耐心看完,您想知道的都在這裡有答案)

…………………………………………….

註解:以前有在官網看見Android字樣,但現在已經沒見到了

所以這套軟體在 Android下執行,可能……不樂觀

下載軟體:

您可以跟我一樣,先在 Windows OS裡面測試、安裝。完成後 再找Android系統重做一次

(1) Open JDK (Java SDK) https://openjdk.org/ (安裝後的目錄名稱 c:\openjdk-22)

(2) Jetty https://eclipse.dev/jetty/ (安裝後的目錄名稱 c:\jetty-home-12.0.8)

您寫好的網頁(.html檔或其他的圖片等等),請先壓縮成 .zip檔,然後 改變 “附檔名”為 .war檔

等一下可以放到適當的 webapps目錄下。

在此,我的網頁已經壓縮為 “你的網頁.zip”,裡面包含了一個靜態網頁,名為 index.html。還有一個目錄,放置圖片等其他東西。

…………………………………………….

接下來要下指令(執行文字指令)了

打開 Windows的 DOS視窗、命令提示字元

(1) 先進入OpenJava的目錄下,可執行 java程式。
cd c:\openjdk-22\bin

(2) jetty會用到的指令 — 先建立 jetty-base目錄
mkdir C:\jetty-home-12.0.8\jetty-base
cd C:\jetty-home-12.0.8\jetty-base

c:\openjdk-22\bin\java -jar C:\jetty-home-12.0.8\start.jar — add-modules=server,http,ee10-deploy
最後一句指令會建立三個 .ini檔。放在 /JETTY-BASE/start.d/ 底下

(3) .war檔(自己寫的網頁 .html檔)應該放在 /JETTY-BASE/webapps/這個目錄底下

(4) 輸入指令
cd C:\jetty-home-12.0.8\jetty-base
c:\openjdk-22\bin\java -jar C:\jetty-home-12.0.8\start.jar 啟動 httpd服務,如下圖。
注意看執行的訊息, /webapps目錄是從哪個目錄下被啟動?
正確應該是 /JETTY-BASE/webapps目錄

在執行指令的過程中,我們可以看到一些重要訊息:

C:\jetty-home-12.0.8\jetty-base>c:\openjdk-22\bin\java -jar C:\jetty-home-12.0.8\start.jar

提醒您。務必在 jetty目錄下,您剛剛建立好的 \jetty-base 子目錄,執行這段指令。

仔細看一下執行的過程,要debug都得看這些東西……
2024–04–16 14:58:04.376:INFO :oejs.Server:main: jetty-12.0.8; built: 2024–03–29T19:58:19.443Z; git: ffffdcc3c863b8f49901cc7c84a8157ebc5d15f9; jvm 22+36–2370
2024–04–16 14:58:04.430:INFO :oejdp.ScanningAppProvider:main: Deployment monitor ee10 in [file:///
C:/jetty-home-12.0.8/jetty-base/webapps/] at intervals 0s
2024–04–16 14:58:04.453:INFO :oejd.DeploymentManager:main: addApp: App@196a42c3[ee10,null,
C:\jetty-home-12.0.8\jetty-base\webapps\你的網頁.war]
2024–04–16 14:58:04.583:WARN :oejew.WebAppContext:main: Failed startup of context oeje10w.WebAppContext@9816741{你的網頁,/你的網頁,b=null,a=STOPPED,h=oeje10s.SessionHandler@1e16c0aa{STOPPED}}{C:\jetty-home-12.0.8\jetty-base\webapps\你的網頁.war}
java.lang.IllegalArgumentException: Unable to mount FileSystem from unsupported URI: jar:file:///C:/jetty-home-12.0.8/jetty-base/webapps/你的網頁.war!/

(5) 打開瀏覽器 http://localhost:8080 察看是否成功?

(5–1) 我在 \jetty-base\webapps目錄下 放了兩個 .war檔

成功的話 Status會出現「Available」。底下有錯誤與解法,請參考。

(5–2) 您寫好的網頁(.html檔或其他的圖片等等),請先壓縮成 .zip檔,然後 改變 “附檔名”為 .war檔 等一下可以放到適當的 webapps目錄下。

在此,我的網頁已經壓縮為 “你的網頁.zip” 。 裡面包含了一個靜態網頁,名為 index.html。還有一個目錄,放置圖片等其他東西。

…………………………………………….

如果遇見這樣的錯誤 —

java.lang.IllegalArgumentException: Unable to mount FileSystem from unsupported URI: jar:file:///C:/jetty-home-12.0.8/jetty-base/webapps/你的網頁.war!/

建議您重新 zip壓縮您的檔案,然後把 “附檔名”再改成 .war。……注意上面的錯誤訊息,最後的附檔名出現 .war!(多了一個驚嘆號)

我很常遇見這種錯誤,原因不明。

--

--

MIS2000 Lab.
MIS2000 Lab.

Written by MIS2000 Lab.

ASP.NET 線上教學 / 線上教程 — .Net Core MVC + WebAPI 與 Web Form。ASP.NET專題實務。免費試聽4~5小時,請來信索取 mis2000lab(at)yahoo. com. tw 或 school(at)mis2000lab. net 謝謝

No responses yet