Hallo,
Ich habe ein Java –Programm, das ganz viele XML-Dateien gegen ein Schema validiert. Es funktioniert auch alles, aber immer wieder wird ein StackOverflowError ausgelöst.
Hier ein kurzer Ausschnitt aus meinem Programm:
In der Methode Validierung, im try-catch Block wir der Stackoverflowerror ausgelöst. Immer an einer anderen XML-Datei. Ich schätze auch, weil diese unterschiedlich groß sind.
Der Aufruf java -Xms6m programm kommt bei mir nicht in Frage, weil ich das Programm eine GUI hat und über ein jar-Packet gestartet wird.
Hat da einer ne Idee und kann mir helfen?
Ich habe ein Java –Programm, das ganz viele XML-Dateien gegen ein Schema validiert. Es funktioniert auch alles, aber immer wieder wird ein StackOverflowError ausgelöst.
Hier ein kurzer Ausschnitt aus meinem Programm:
Java:
public static void schemaPruefen() throws Exception {
Thread myThread = new Thread() {
String zeile = "";
public void run() {
try {
BufferedReader in = new BufferedReader(new FileReader(new File(pfadliste)));
int anzwhile =0;
while ((zeile = in.readLine()) != null) {
anzwhile++;
try {
Validierung(zeile);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
};
myThread.start();
}
public static void Validierung(String xml) throws Exception {
SchemaErrorHandler seh=new SchemaErrorHandler(new String(xml));
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);
try {
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler(seh);
Document doc = builder.parse(new File(xml));
Validator validator = schema.newValidator();
validator.validate(new DOMSource(doc));
System.out.println(xml + " ist valide.\r\n");
anzalle++;
anzok++;
} catch(StackOverflowError e) {
System.out.println(“Stackoverflowerror:“ + xml);
}
}
In der Methode Validierung, im try-catch Block wir der Stackoverflowerror ausgelöst. Immer an einer anderen XML-Datei. Ich schätze auch, weil diese unterschiedlich groß sind.
Der Aufruf java -Xms6m programm kommt bei mir nicht in Frage, weil ich das Programm eine GUI hat und über ein jar-Packet gestartet wird.
Hat da einer ne Idee und kann mir helfen?