2015-05-26 10 views
6

Ich arbeite an einem CLI Spring Shell-Code in IntelliJ. Ich lasse es laufen und gebe einige Parameter ein. Aber wenn ich Einfügung eintippe und Enter drücke, nimmt die Konsole es nicht und es scheint, als wäre nichts passiert!CLI-Spring Shell in IntelliJ

Mein Code:

@Component 
public class HelloWorldCommands implements CommandMarker { 

    @CliCommand(value = "insert", help = "insert data to ParsEMS DB") 
    public void insert() { 
     try { 
      Class.forName("org.postgresql.Driver"); 
      Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/ParsEMS", "xxxxxx", "xxxxxxx"); 
      Statement st = con.createStatement(); 
      st.executeUpdate("INSERT INTO node (name, destination) VALUES ('b', 200)"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     System.out.println("insert to ParsEMS DB"); 
    } 
} 



public class Main { 
    public static void main(String[] args) throws Exception { 
     Bootstrap.main(args); 
    } 
} 

ich unten Ergebnis sehen, wenn ich es laufen;

1.1.0.RELEASE

Willkommen zum Frühling Shell. Wenn Sie Hilfe benötigen, drücken Sie oder tippen Sie "Hinweis" und drücken Sie ENTER.

feder shell>

+1

I Ich gebe Ihnen den Vorteil des Zweifels mit dieser Bearbeitung und füge die fehlenden geschweiften Klammern hinzu, die mit Ihrem Code weggelassen wurden. Ich möchte Sie ermutigen, sich explizit darüber zu äußern, was Sie sehen und was Sie nicht sehen. Werden in der Datenbank Datenwerte angezeigt? Sehen Sie irgendwelche Nachrichten in der Konsole ausgedruckt? Was passiert, wenn Sie den Debugger an diesen Code anhängen und ausführen? – Makoto

+0

*** Vielen Dank ***. ** 1: Sehen Sie irgendwelche Datenwerte, die der Datenbank hinzugefügt wurden? ** * no nothing happen *. ** 2: Sehen Sie Nachrichten in der Konsole ausgedruckt? ** * keine Nachricht ausgedruckt *. ** 3: Was passiert, wenn Sie den Debugger an diesen Code anhängen und ausführen? ** * Entschuldigung, Sir. Ich verstehe nicht, was du meinst! weil ich ein Anfänger in Java * bin. –

Antwort

12

Frühling Shell verwendet jline. Sie müssen die Laufkonfiguration in Ihrem Intellij bearbeiten und die vm Optionen Argumente wie folgt hinzufügen:

Unix-Maschinen:

-Djline.terminal=org.springframework.shell.core.IdeTerminal 

Auf Windows-Rechnern:

-Djline.WindowsTerminal.directConsole=false -Djline.terminal=jline.UnsupportedTerminal 
+0

danke für die antwort, wie prompt name 'spring>' in meinem terminal zu ändern? –

+1

Kein Problem! Sie müssen im Grunde die DefaultPromptProvider.class erweitern und Ihren eigenen String zurückgeben, siehe https://gist.github.com/4F2E4A2E/96ec03bdd9ac457b5206 – 4F2E4A2E

+0

wie man dieselbe Shell in jeder Anwendung ohne Springframework erstellt? –