2012-12-29 10 views
14

Cerco librerie per Java che mi permetterà di creare una shell interattiva. Ho fatto qualche ricerca in giro e non ho trovato un bel po '. La maggior parte di quello che ho trovato è librerie per l'aggiunta di comandi argomento di analisi per la mia domanda, che non mi aiuta molto.Biblioteche per la costruzione di una shell interattiva per l'applicazione Java

La pista migliore che ho trovato è una libreria chiamata Cliche che fa esattamente quello che mi serve. Il problema è troppo semplice. Sto cercando qualcosa che ha più personalizzazione.

Qualcuno ha incontrato qualcosa di un po 'più avanzato?

+0

Se sei davvero interessato alla personalizzazione, puoi dare un'occhiata a parboiled. – fge

risposta

4

Secondo this QuestionJLine può essere un buon tentativo.

Features of JLine

  • storia Command - Righe che sono state immesse in precedenza possono essere richiamati e modificati e può essere mantenuta in modo che siano disponibili
    tra le sessioni del programma.
  • Modifica riga - JLine consente la modifica completa della riga di comando corrente e tenta di simulare il comportamento di GNU Readline come possibile , incluso il supporto per emacs e mappature dei tasti vi.
  • Completamento: JLine fornisce un meccanismo collegabile per l'implementazione del completamento della scheda della riga di comando (ovviamente il completamento può essere associato a qualsiasi chiave che si desidera) .
  • attacchi personalizzate chiave - Le chiavi possono essere arbitrariamente rimappata per eseguire una determinata azione, e JLine tentativi di onorare qualsiasi mappatura che è insieme nel file readline .inputrc esistente.
  • Mascheratura caratteri - L'input può essere raccolto dall'utente senza alcun feedback visivo. Questo è utile per richiedere le password.
  • 99,99% Java - La vasta parte di JLine è tutta Java, utilizzando solo un piccolo bit di codice nativo, fornito dal progetto Jansi, al supporto
    di Windows.
+1

Sulla base di ciò che stavo leggendo, JLine sembra funzionare bene. Il problema è che la documentazione sembra molto scarsa per la libreria. Inoltre non è un problema, ma non riesco a trovare alcun esempio di JLine in uso. – ianc1215

+0

Puoi vedere un esempio nella fonte https://github.com/jline/jline2/blob/master/src/test/java/jline/example/Example.java – burna

+0

L'esempio che hanno non sembra funzionare. Invece di darmi un prompt, funziona e si ferma. Penso che Jline funzionerà per me se posso entrare in contatto con gli sviluppatori e avere maggiori informazioni su come usarlo. Non sembrano avere un JavaDoc per JLine2, ma ce n'è uno per Jline1. Grazie per l'aiuto. – ianc1215

9

opzioni da considerare:

  • javacurses/JCurses - una console basata su finestre toolkit, simile a quella di UNIX maledice disegno
  • swing-console potrebbe essere appropriato se si desidera una vista in stile console/uscita in una finestra della GUI Swing. potresti usarlo per costruire una shell interattiva.
  • JLine - libreria per console di input simile a GNU readline
  • Diverse lingue JVM offrono un interattivo REPL environment che può essere usato come una shell interattiva, per esempio Clojure
+0

La mia precedente esperienza con Maledizioni in altre lingue si è rivelata un grande dolore per me. Ma per me per ottenere la funzionalità che sto cercando, potrei dover considerarlo come un'opzione. – ianc1215

+2

http://www.beanshell.org/ aggiunge anche un bel ambiente interattivo. – 9000

+0

Per quanto ho letto su Beanshell sembra eccessivo. È un vero e proprio script per la lingua per Java. – ianc1215

3

Stiamo usando Spring shell e ha funzionato molto bene per noi.Alcune delle sue caratteristiche:

  • Un semplice, l'annotazione guidato, modello di programmazione di contribuire personalizzato comandi

  • L'uso della funzionalità di scansione classpath Primavera asthe base per una strategia di plug-in
    comando e il comando develoment

  • Ereditarietà delle funzionalità di Roo Shell, in particolare completamento della scheda, colorazione e esecuzione di script.

  • Personalizzazione del prompt dei comandi, banner, nome file cronologia shell.

Problemi correlati