Je cours un peu de code et je m'attends à recevoir un message spécifique envoyé à Systen.err pour sortir à un moment donné, mais pour une raison quelconque, il sortira à un autre moment. Voici le code -Sortie standard Eclipse/synchronisation des erreurs
public static void main(String[] args) throws Exception {
System.out.println("File 1:");
for (NormalizedEntity ne : theSolution.entities.values()){
System.out.println(ne);
}
System.out.println("\nFile 2:");
for (NormalizedEntity ne : theSubmission.entities.values()){
System.out.println(ne);
}
System.out.println(check());
}
static String check() {
StringBuilder resultString = new StringBuilder();
System.out.println("\nstarting check");
for (NormalizedEntity solutionEntity : theSolution.entities.values()){
NormalizedEntity submissionEntity = theSubmission.entities.get(solutionEntity.name);
if(solutionEntity instanceof NormalizedClass){
if(!(submissionEntity instanceof NormalizedClass)){
System.err.println("***WARNING: solutionEntity " + solutionEntity + "is a class but submissionEntity " + submissionEntity + " is not");//<---This line should be second to last
resultString.append("Expected " + submissionEntity + " to be a class called " + solutionEntity);
}
}
//System.out.println("Found: " + ne + " in both");
}
return resultString.toString();
}
Et voici la sortie -
***WARNING: solutionEntity Class C {x=private int x, y=private int y} {C=C{1thParam=int, 2thParam=int}} {getX=int getX{}}is a class but submissionEntity null is not <--------- THIS LINE SHOULD BE AT THE END
File 1:
Class C {x=private int x, y=private int y} {C=C{1thParam=int, 2thParam=int}} {getX=int getX{}}
Class SubC {z=private int z} {} {}
C c
double d
int f{}
int i
SubC subC
File 2:
Class D {x=private int x, y=private int y} {D=D{1thParam=int, 2thParam=int}} {getX=int getX{}}
Class SubC {z=private int z} {} {}
D c
double d
int f{}
int i
SubC subC
starting check
Expected null to be a class called Class C {x=private int x, y=private int y} {C=C{1thParam=int, 2thParam=int}} {getX=int getX{}}
maintenant basé sur le code de la première ligne de sortie devrait être la deuxième à la dernière ligne. Cependant, quand je cours cela en éclipse, il apparaît comme la première ligne. Pourquoi est-ce? J'ai également remarqué que si je change le System.err
en System.out
il sort comme prévu. Donc, il semble que Eclipse recueille d'abord toutes les sorties d'erreur et traite ensuite la sortie standard?
'err' a priorité et est immédiatement imprimé. J'ai eu des cas où une trace de pile a été imprimée au milieu d'une ligne. –