2012-12-29 6 views
14

Ich bin auf der Suche nach Bibliotheken für Java, mit denen ich eine interaktive Shell erstellen kann. Ich habe ein wenig gesucht und bin nicht viel aufgetaucht. Das meiste, was ich gefunden habe, sind Bibliotheken zum Hinzufügen von Befehlsargument-Parsing zu meiner Anwendung, was mir nicht sehr hilft.Bibliotheken zum Erstellen einer interaktiven Shell für Java-Anwendung

Die beste Spur, die ich gefunden habe, ist eine Bibliothek namens Cliche, die genau das tut, was ich brauche. Das Problem ist zu einfach. Ich suche nach etwas, das mehr Anpassung hat.

Hat jemand etwas etwas fortgeschrittener begegnet?

+0

Wenn Sie wirklich in Anpassung sind, möchten Sie vielleicht einen Blick auf parboiled. – fge

Antwort

4

Nach this QuestionJLine kann ein guter Versuch sein.

Features of JLine

  • Befehlshistorie - Zeilen, die zuvor eingegeben wurden, so sei daran erinnert, und bearbeitet und können beibehalten werden, dass sie
    über mehrere Sitzungen des Programms zur Verfügung stehen.
  • Zeilenbearbeitung - JLine ermöglicht die vollständige Bearbeitung der aktuellen Befehlszeile und versucht, so viel vom Verhalten von GNU Readline wie nachzuahmen, einschließlich Unterstützung für Emacs und vi-Tastenzuordnungen.
  • Abschluss - JLine bietet einen Pluggable-Mechanismus für die Implementierung der Befehlszeilen-Tab-Vervollständigung (natürlich kann die Vervollständigung an beliebig Schlüssel gebunden werden).
  • Benutzerdefinierte Tastenbelegungen - Schlüssel können willkürlich so zugeordnet werden, dass sie eine bestimmte Aktion ausführen, und JLine versucht, alle in der vorhandenen readline.inputrc-Datei festgelegten Zuordnungen zu berücksichtigen, die sind.
  • Zeichenmaskierung - Eingaben können ohne visuelle Rückmeldung vom Benutzer vorgenommen werden. Dies ist nützlich für die Eingabe von Passwörtern.
  • 99,99% Java - Der große Teil von JLine ist alles Java, mit nur ein wenig nativem Code, der vom Jansi-Projekt zur Verfügung gestellt wird, zu
    unterstützt Windows.
+1

Basierend auf dem, was ich gelesen habe, sieht JLine aus, als würde es gut funktionieren. Das Problem ist, dass die Dokumentation für die Bibliothek sehr knapp ist. Auch nicht so ein Problem, aber ich kann kein Beispiel für die Verwendung von JLine finden. – ianc1215

+0

Sie können ein Beispiel in der Quelle sehen https://github.com/jline/jline2/blob/master/src/test/java/jline/example/Example.java – burna

+0

Das Beispiel, das sie haben, scheint nicht zu funktionieren. Anstatt mir eine Aufforderung zu geben, läuft es einfach und stoppt. Ich denke, dass Jline für mich arbeiten wird, wenn ich mit den Entwicklern in Kontakt treten kann und mehr Informationen darüber bekomme, wie man es benutzt. Sie scheinen kein JavaDoc für JLine2 zu haben, aber es gibt eines für Jline1. Danke für die Hilfe. – ianc1215

9

Optionen zu prüfen:

  • javacurses/JCurses - eine konsolenbasierte Windowing Toolkit, ähnlich dem UNIX-Flüche Design
  • swing-console könnte sinnvoll sein, wenn Sie eine Konsole-Stil-Ansicht/Ausgabe wollen in einem Swing-GUI-Fenster. Sie könnten damit eine interaktive Shell erstellen.
  • JLine - Bibliothek für die Konsoleneingabe ähnlich wie GNU Readline-
  • Mehrere JVM Sprachen bieten eine interaktive REPL environment, die als eine interaktive Shell verwendet werden können, z.B. Clojure
+0

Meine früheren Runs mit Flüche in anderen Sprachen erwiesen sich als ein großer Schmerz für mich. Aber für mich, um die Funktionalität zu bekommen, die ich suche, muss ich es als eine Option betrachten. – ianc1215

+2

http://www.beanshell.org/ fügt auch eine nette interaktive Umgebung hinzu. – 9000

+0

Soweit was ich über Beanshell gelesen habe, scheint das wie Overkill. Es ist eine vollständige Skriptsprache für Java. – ianc1215

3

Wir verwenden Spring shell, und es funktionierte wirklich gut für uns.Einige seiner Eigenschaften:

  • Eine einfache, Kommentierung angetrieben, Programmiermodell beitragen benutzerdefinierte Befehle

  • Verwendung von Spring Classpath-Scanning-Funktionalität asthe Basis für eine
    Befehl Plugin Strategie und Befehl develoment

  • Vererbung der Roo-Shell-Funktionen, insbesondere Tabulatorvervollständigung, Kolorierung und Skriptausführung.

  • Anpassung der Eingabeaufforderung, Banner, Shell-Verlauf Dateiname.

Verwandte Themen