Ich brauche eine Möglichkeit, mit einem externen Tool zu kommunizieren, das über eine Befehlszeilenschnittstelle aus meiner Java-Anwendung verfügt. Gibt es ein praktisches Tool/lib, um es weniger schmerzhaft zu machen? Glaub mir, ich habe genug gegoogelt. Vielen Dank!Gibt es ein Java-Tool für die Kommunikation mit einer externen CLI?
Antwort
Ich habe die Prozess-Handler am Ende mit (genauer gesagt, die com.intellij.execution.process.OSProcessHandler) von IntelliJ IDEA Plattform-API + meinen eigenen kleinen Kommando-basierten Rahmen, in dem jeden Befehl knowns schreiben, wie man Ausführen selbst (Schreiben) und Parsen der Antwort von einem Prozess (Lesen).
Sie können Runtime.exec()
zum Ausführen externer Befehle des Betriebssystems verwenden. Seien Sie sich jedoch dessen bewusst, dass Sie es benutzen - lesen Sie zuerst article.
Wenn das für Ihre Bedürfnisse zu einfach ist, werfen Sie einen Blick auf ProcessBuilder. Es ist verfügbar, da Java 1.5, vom release notes:
Die neue Process Klasse bietet eine bequeme Möglichkeit, Teilprozesse zu berufen als Runtime.exec tut. Insbesondere erleichtert es ProcessBuilder, einen Subprozess mit einer modifizierten Prozessumgebung zu starten (dh einer, die auf der Prozessumgebung der übergeordneten Umgebung basiert, aber mit einigen Änderungen).
Danke, aber ich bin weit hinter 'Runtime.exec()' –
@AlexanderEliseyev Ich aktualisierte meine Antwort mit einer anderen, besseren Alternative –
Ich brauche eine Möglichkeit, ** mit einem Prozess ** kommunizieren, nicht um es zu starten . Ich brauche ein Tool, um die Bearbeitung der Anfragen/Antworten während des Gesprächs mit der externen CLI zu erleichtern. –
- 1. CLI-Kommunikation mit bereits laufender Java-Anwendung?
- 2. Gibt es eine Standardmethode zum Verknüpfen mit einer externen Website?
- 3. Gibt es eine Möglichkeit, eine vordefinierte URL für ein S3-Objekt mit AWS CLI zu generieren?
- 4. So garantieren Sie Bits von Zeichen und Kurzschluss für die Kommunikation mit externen Gerät
- 5. Gibt es eine Möglichkeit zur Kommunikation mit Modulen in bottleplatejs?
- 6. Gibt es ein Plugin für die Mehrfachauswahl mit Bestellfunktion?
- 7. Welche Java externen Pakete/Bibliotheken gibt es?
- 8. Gibt es ein Projekt/eine Gruppe von Bibliotheken, die die Kommunikation zwischen verschiedenen Programmiersprachen/Plattformen erleichtern?
- 9. Gibt es einen einfachen CLI Java-Linter?
- 10. Angular 2 - Kommunikation von Typescript-Funktionen mit externen js-Bibliotheken
- 11. Gibt es einen Fehler mit externen Vorlage in Visual C++?
- 12. Gibt es bessere Java CLI-Debugger-Tools als jdb?
- 13. Gibt es ein Ipython-Äquivalent für Erlang?
- 14. Gibt es ein besseres Webview für Android
- 15. Gibt es einen Inhaltstyp für ein NRL?
- 16. Gibt es ein Kommentarzeichen für die .env-Datei des Vorarbeiters?
- 17. Gibt es ein Klassenbibliotheksdiagramm für Django?
- 18. gibt es die folgenden Fehler „DataNode verweigert die Kommunikation mit NameNode“ während hadoop 0.23.8
- 19. Gibt es ein #define für C99?
- 20. Softwarelösung für die Kommunikation zwischen zwei Teams?
- 21. Gibt es eine Grenze für die Größe einer Datei, wenn ein Download mit PHP ausgelöst wird?
- 22. Gibt es ein Ereignis für neue @ Input zu einer Komponente?
- 23. Gibt es ein universelles Modell für Sprachen?
- 24. Gibt es ein Klickverhalten für eine Liste?
- 25. Gibt es ein Ereignis für die mittlere Maustaste im Dart?
- 26. Gibt es ein Beispiel für die Implementierung von cv2.KalmanFilter?
- 27. Gibt es ein Maximum für die Ausgabe von PDO :: debugDumpParams?
- 28. Gibt es ein Ruby-Projekt für die Sicherung?
- 29. Gibt es ein Widget für "Freunde, die diese App verwenden"
- 30. Gibt es ein IntelliJ Python-Plugin für die Community Edition?
http://stackoverflow.com/questions/2417495/java-cli-ui-design-frameworks-or-libraries. Die Internetsuche nach "Java Shell" wird einige Möglichkeiten bieten. Ein reines CLI für die Einbettung könnte auch aus diesen Projekten extrahiert werden. –
@JoopEggen Ich denke nicht, dass das, was das OP will, er muss mit einem externen CLI-Tool kommunizieren, nicht um ein CLI –
http://stackoverflow.com/questions/3343066/reading-streams-from-java- zu implementieren Laufzeit-exec – cherit