2012-05-09 14 views
19

Szukałem bardzo szeroko, ale nie znalazłem czegoś, co działa ... Musi być sposób! Potrzebuję więc kodu, który wyczyści konsolę w Eclipse (czyni ją pustą). I NIE, nie drukując 50 pustych linii, CZYŚCIĆ!Jak wyczyścić konsolę w Javie - Eclipse SDK

Znalazłem to:

Import import java.io.Console; 

public void ClearConsole() { 
      Console console = System.console();   
      if (console == null) 
        System.out.println("Couldn't get Console object !"); 
      console.clear(); 
    } 

Ale to daje mi błąd: "metoda clear() jest niezdefiniowane dla konsoli typu"

+0

https://bugs.eclipse.org/bugs/show_bug.cgi?id=122429 –

+1

Niestety, ale metoda clear() nie jest zdefiniowana dla java.io.Console http://docs.oracle.com/javase /7/docs/api/java/io/Console.html – lfergon

Odpowiedz

9

W narzędziu Eclipse można wyczyścić panel konsoli przez kliknij prawym przyciskiem myszy + wyczyść, ale nie w Javie.

Konsola to narzędzie dziennika, którego nie można wyczyścić dla bezpieczeństwa administracyjnego.

+0

PO szuka sposobu, aby zrobić to programowo. Możesz także kliknąć mały szary krzyż w prawym górnym rogu konsoli Eclipse, aby go wyczyścić :) – Jerome

+1

@Jerome OP opowiadał o Eclipse, dając leniwy roztwór. –

8

mogę się spóźnić z moją odpowiedź, ale tutaj jest to, co udało mi się zrobić (i pracował dla mnie):

tworzę konsoli na podstawie tego tutoriala http://wiki.eclipse.org/FAQ_How_do_I_write_to_the_console_from_a_plug-in%3F i zmodyfikował metodę findConsole aby wyglądać to:

private MessageConsole findConsole(String name) { 

     ConsolePlugin plugin = ConsolePlugin.getDefault(); 
     IConsoleManager conMan = plugin.getConsoleManager(); 

     IConsole[] existing = conMan.getConsoles(); 
     //if console exists, clear it 
     for (int i = 0; i < existing.length; i++) 
      if (name.equals(existing[i].getName())){ 
       ((MessageConsole) existing[i]).clearConsole(); //this is the important part 
       return myConsole; 
      } 

     myConsole = new MessageConsole(name, null); 
     conMan.addConsoles(new IConsole[]{myConsole}); 
     return myConsole; 
    } 

Więc w słuchacza jakiegoś innego przycisku/control/cokolwiek, mam:

myConsole = findConsole(ASIO_RECORD_OUTPUT); 
myConsoleOut = myConsole.newMessageStream(); 

a gdy ten kawałek kodu zostanie wykonany moja konsola jest wyczyszczona. Mam nadzieję, że to pomoże.

edytuj: Zapomniałem wspomnieć, zrobiłem to podczas tworzenia aplikacji RCP!