2016-07-22 12 views
0

Das Szenario ist wie folgt - Ich habe eine Haupt-Java-Datei file1 und eine jar Datei namens Minimize. Ich erstelle eine object einer class namens MinimizeTable, die in der jar definiert ist. Nun erzeugt dieses Erzeugen von Objekten, dass einige Zeilen gedruckt werden, die in dem Jar definiert sind. Ich möchte nur diese Ausgabe umleiten. Abgesehen davon hat meine Hauptdatei viele Standardzeilen, die gedruckt werden müssen, um sich selbst zu formatieren. Gibt es überhaupt eine Umleitung nur, was von der JAR-Datei gedruckt wird, aber nicht der Rest? Ich habe die Situation weiter unten definiert -Umleitung Stdout einer JAR-Datei in Java

class file1{ 
    public static void main(String[] args) 
    { 
     MinimizedTable M = new MinimizedTable(); //this instantly prints stuff out which I want to be redirected and not printed to stdout. 
     System.out.println("Hello"); //This line must be printed to stdout. 
    } 
    } 

Gibt es eine Möglichkeit, dies zu tun die JAR-Datei ohne sie zu berühren? Hoffe, meine Erklärung ergibt Sinn.

+1

Können Sie einen kleinen Einblick in das, wo 'MinimizeTable' ist? Befindet es sich in einer proprietären JAR-Datei? Erkennt es 'log4j'? Wenn ja, können Sie erreichen, was Sie wollen mit dem, was Sundaraj kommentierte. – Carlos

Antwort

0

Sie es mit Log4j erreichen kann, etwas Ähnliches wie dieses ...

log4j.logger.abc.xyz.MinimizedTable=OFF 

Für reine Java-Lösung finden Sie diese SO question.

0

Ohne externe Abhängigkeit und mit einer geringfügigen Änderung der Haupt:

System.setOut(new FilteredOutput(System.out)); 

    MinimizedTable M = new MinimizedTable(); 

    System.out.println("Hello"); 

Und dann FilteredOutput etwas wie folgt aus:

import java.io.OutputStream; 
import java.io.PrintStream; 


public class FilteredOutput extends PrintStream { 

    public FilteredOutput(OutputStream out) { 
     super(out); 
    } 

    @Override 
    public void println(String x) { 

     if (Thread.currentThread().getStackTrace()[2].getClassName().equals(MinimizedTable.class.getName())) { 

      super.println("From MinimizedTable: "+x); 

     } else { 

     super.println(x); 

     } 
    } 

    ... 

}