
Tommybox adalah wadah yang dapat dieksekusi mandiri yang memungkinkan untuk meluncurkan aplikasi web statis dan dinamis di desktop dengan menyediakan fungsionalitas server dan browser bawaan.
Tommybox mirip dengan Electron dan NW.JS.
Aplikasi dapat disediakan sebagai direktori atau dikemas sebagai arsip perang (atau zip) yang dapat berisi JSP, servlet, dan hal -hal statis seperti CSS, JavaScript, dll.
Di bawah kap, Tommybox dibangun di atas Tommy Web Server dan Widget Browser SWT. Aplikasi dapat dikemas sebagai arsip perang atau zip dan secara opsional dapat berisi manifes PWA, JSP, servlets dan semua hal statis seperti CSS, file JavaScript dll.
Lihat Tommybox beraksi: 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
Jalankan file zip (atau perang):
java -jar tb.jar --app MyKillerApp.warJalankan file zip (atau perang) dengan args baris perintah khusus:
java -jar tb.jar --app MyKillerApp.war myparam1 myparam2 ...Jalankan zip (atau perang) dari server web:
java -jar tb.jar --app https://example.com/MyKillerApp.zipJalankan aplikasi web yang meledak dari direktori:
java -jar tb.jar --app MyKillerAppDirJalankan arsip zip (atau perang) yang dilindungi kata sandi:
java -jar tb.jar --app MyKillerApp.zip --password mysecret/app tb.jar .app.war atau app.zip (arsip dapat dienkripsi) dan menyalin arsip ke direktori root tb.jar . MREK Aplikasi Anda dengan mengganti nama tb.jar ke MyKillerApp.jar .
Jalankan Aplikasi Tertanam:
java -jar MyKillerApp.jarJalankan Aplikasi Tertanam dengan Args Command-Line Kustom:
java -jar MyKillerApp.jar myparam1 myparam2 ...Jalankan aplikasi tertanam yang dilindungi kata sandi:
java -jar MyKillerApp.jar --password mysecretJalankan aplikasi tertanam yang dilindungi kata sandi dengan Args Command-Line Kustom:
java -jar MyKillerApp.jar --password mysecret myparam1 myparam2 ...| Kunci | Jenis | Nilai default | Keterangan |
|---|---|---|---|
display | string | standalone | Mode display PWA standar.Nilai yang mungkin: standaloneminimal_uibrowserfullscreenminimized_window (non-standar)maximized_window (non-standar)desktop_area (non-standar)headless (non-standar) |
enable_fullscreen | boolean | true | Izinkan mode layar penuh |
tray_icon | boolean | true | Ikon Baki |
window_buttons | array | ["minimize", "maximize", "close"] | Daftar tombol jendela. Kemungkinan elemen: minimizemaximizeclose |
window_menu | string | none | Mode Menu Jendela. Nilai yang mungkin: customnativenone |
window_always_on_top | boolean | false | Selalu di properti jendela atas |
window_size | string | null | Ukuran jendela sebagai string mis.: 640x480 |
window_x | number | null | Lokasi jendela x koordinat (dalam piksel) |
window_y | number | null | Lokasi jendela y koordinat (dalam piksel) |
strings | array | [] | Kamus i18n untuk string khusus |
| Protokol | Keterangan | Contoh HTML |
|---|---|---|
home: | Aksi rumah | <a href="home:">Home</a> |
back: | Tindakan Kembali | <a href="back:">Back</a> |
forward: | Tindakan maju | <a href="forward:>Forward</a> |
reload: | Muat Ulang Tindakan | <a href="reload:">Reload</a> |
quit: | Keluar ke OS | <a href="quit:">Exit</a> |
minimize: | Meminimalkan jendela | <a href="minimize:">Minimize</a> |
fullscreen: | Beralih ke layar penuh | <a href="fullscreen:">Fullscreen</a> |
open: | Buka URL yang diberikan di OS | <a href="open:file://home/john/my.pdf">Open PDF</a> |
open_in_new_window: | Buka URL yang diberikan di jendela baru | <a href="open_in_new_window:http://example.com">Open in New Window</a> |
open_in_browser: | Buka URL yang diberikan di browser | <a href="open_in_browser:http://example.com">Open in Browser</a> |
java: | Luncurkan Kode Java | <a href="java:javax.swing.JOptionPane.showMessageDialog(null, "Hello, Java!")">Launch Java Code</a> |
js: | Luncurkan Kode 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" );
// ...
Q. Aplikasi saya gagal dengan java.lang.ClassNotFoundException: javax.servlet.*
A. Sebagai hasil dari perpindahan dari Java EE ke Jakarta EE, mulai dari V10, Apache Tomcat hanya mendukung spesifikasi Jakarta EE. javax.servlet.* Tidak lagi didukung. Ganti javax.servlet.* Impor dalam kode Anda dengan jakarta.servlet.* .