tommybox
v2.14.2

Tommybox是一個獨立的可執行容器,可以通過提供內置服務器和瀏覽器功能在桌面上啟動靜態和動態的Web應用程序。
Tommybox類似於Electron和NW.J。
一個應用程序可以作為目錄或包裝作為戰爭(或zip)檔案的目錄提供,該檔案可以包含JSP,Servlet和CSS,JavaScript等靜態物品。
在引擎蓋下,Tommybox建立在Tommy Web服務器和SWT瀏覽器小部件的頂部。應用程序可以用作戰爭或郵政編碼的包裝,並且可以選擇包含PWA清單,JSP,Servlet和所有靜態內容,例如CSS,JavaScript文件等。
請參閱行動中的Tommybox:https://github.com/xnbox/tommybox_demo
tb.jar的最新版本 java -jar tb.jar [options] [custom arg]...
Options:
--help print help message
--app <file|dir|URL> run app from ZIP or WAR archive, directory or URL
--password <string> provide password for encrypted ZIP or WAR archive
運行zip(或戰爭)文件:
java -jar tb.jar --app MyKillerApp.war使用自定義命令行args運行zip(或戰爭)文件:
java -jar tb.jar --app MyKillerApp.war myparam1 myparam2 ...從Web服務器運行ZIP(或WAR):
java -jar tb.jar --app https://example.com/MyKillerApp.zip從目錄運行爆炸的Web應用程序:
java -jar tb.jar --app MyKillerAppDir運行受密碼保護的ZIP(或戰爭)檔案:
java -jar tb.jar --app MyKillerApp.zip --password mysecrettb.jar的/app目錄中。app.war或app.zip (可以加密存檔),然後將存檔複製到tb.jar的根目錄。通過將tb.jar重命名為MyKillerApp.jar來給您的應用打上烙印。
運行嵌入式應用程序:
java -jar MyKillerApp.jar運行具有自定義命令行args的嵌入式應用程序:
java -jar MyKillerApp.jar myparam1 myparam2 ...運行受密碼保護的嵌入式應用程序:
java -jar MyKillerApp.jar --password mysecret運行具有自定義命令行args的受密碼保護的嵌入式應用程序:
java -jar MyKillerApp.jar --password mysecret myparam1 myparam2 ...| 鑰匙 | 類型 | 預設值 | 描述 |
|---|---|---|---|
display | string | standalone | 標準PWA display模式。可能的值: standaloneminimal_uibrowserfullscreenminimized_window (非標準)maximized_window (非標準)desktop_area (非標準)headless (非標準) |
enable_fullscreen | boolean | true | 允許全屏模式 |
tray_icon | boolean | true | 托盤圖標 |
window_buttons | array | ["minimize", "maximize", "close"] | 窗口按鈕列表。 可能的元素: minimizemaximizeclose |
window_menu | string | none | 窗口菜單模式。 可能的值: customnativenone |
window_always_on_top | boolean | false | 始終在頂部窗口屬性 |
window_size | string | null | 窗口大小為字符串,例如:640x480 |
window_x | number | null | 窗口位置X坐標(以像素為單位) |
window_y | number | null | 窗口位置y坐標(以像素為單位) |
strings | array | [] | I18N定製字符串字典 |
| 協定 | 描述 | HTML示例 |
|---|---|---|
home: | 家庭行動 | <a href="home:">Home</a> |
back: | 背部動作 | <a href="back:">Back</a> |
forward: | 遠期行動 | <a href="forward:>Forward</a> |
reload: | 重新加載動作 | <a href="reload:">Reload</a> |
quit: | 退出OS | <a href="quit:">Exit</a> |
minimize: | 最小化窗口 | <a href="minimize:">Minimize</a> |
fullscreen: | 切換到全屏 | <a href="fullscreen:">Fullscreen</a> |
open: | 在操作系統中打開給定的URL | <a href="open:file://home/john/my.pdf">Open PDF</a> |
open_in_new_window: | 在新窗口中打開給定的URL | <a href="open_in_new_window:http://example.com">Open in New Window</a> |
open_in_browser: | 在瀏覽器中打開給定的URL | <a href="open_in_browser:http://example.com">Open in Browser</a> |
java: | 啟動Java代碼 | <a href="java:javax.swing.JOptionPane.showMessageDialog(null, "Hello, Java!")">Launch Java Code</a> |
js: | 啟動JavaScript代碼 | <a href="js:javax.swing.JOptionPane.showMessageDialog(null, 'Hello, JavaScript!')">Launch JavaScript Code</a> |
// ...somewhere in your Servlet or JSP
InitialContext ctx = new InitialContext ();
/* get custom command-line args */
String [] args = ( String []) ctx . lookup ( "java:comp/env/tommy/args" );
/* get standard input (stdin) */
InputStream stdin = ( InputStream ) ctx . lookup ( "java:comp/env/tommy/stdin" );
/* get standard output (stdout) */
PrintStream stdout = ( PrintStream ) ctx . lookup ( "java:comp/env/tommy/stdout" );
/* get standard error (stderr) */
PrintStream stderr = ( PrintStream ) ctx . lookup ( "java:comp/env/tommy/stderr" );
/* get "--app" parameter value */
String app = ( String ) ctx . lookup ( "java:comp/env/tommy/app" );
// ...
問:我的應用程序失敗了java.lang.ClassNotFoundException: javax.servlet.*
答:由於從v10開始,Apache Tomcat僅支持Jakarta EE Spec。 javax.servlet.*不再支持。替換javax.servlet.*用jakarta.servlet.* 。