Reputation: 1113
I am facing strange error. My all java code runs without any problem on my laptop (windows 7) but when I upload it to our server (linux) then am seeing following in tomcat log:
Exception in thread "ajp-bio-8009-exec-1" java.lang.StackOverflowError
at java.lang.System.checkKey(System.java:831)
at java.lang.System.getProperty(System.java:705)
at sun.security.action.GetPropertyAction.run(GetPropertyAction.java:84)
at sun.security.action.GetPropertyAction.run(GetPropertyAction.java:49)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.PrintWriter.<init>(PrintWriter.java:116)
at java.io.PrintWriter.<init>(PrintWriter.java:100)
at mig.common.src.ErrorCheck.errorMsg(ErrorCheck.java:50)
at mig.common.src.SendEmail.send(SendEmail.java:71)
at mig.common.src.ErrorCheck.errorMsg(ErrorCheck.java:54)
at mig.common.src.SendEmail.send(SendEmail.java:71)
at mig.common.src.ErrorCheck.errorMsg(ErrorCheck.java:54)
at mig.common.src.SendEmail.send(SendEmail.java:71)
Here is my ErrorCheck.errorMsg code:
public String errorMsg(String subject, Exception e){
String stackTrace = "";
try{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
stackTrace = sw.toString();
stackTrace = stackTrace.replaceAll("\n","<br>"); SendEmail.send("[email protected]","[email protected]",subject,stackTrace);
pw.close();
pw = null;
sw.close();
sw = null;
System.gc();
}catch(Exception ex){
ex.printStackTrace();
}
return stackTrace;
}
Please advise.
Thanks in anticipation
Upvotes: 1
Views: 6653
Reputation: 69470
Looks like your program send an email if you have an error. In this case you have an error when sending an email, so you have an "endless loop".
You can see it here:
at mig.common.src.ErrorCheck.errorMsg(ErrorCheck.java:50)
at mig.common.src.SendEmail.send(SendEmail.java:71)
at mig.common.src.ErrorCheck.errorMsg(ErrorCheck.java:54)
at mig.common.src.SendEmail.send(SendEmail.java:71)
at mig.common.src.ErrorCheck.errorMsg(ErrorCheck.java:54)
at mig.common.src.SendEmail.send(SendEmail.java:71)
And finally you get a java.lang.StackOverflowError
Upvotes: 2
Reputation: 1113
The actual problem was as following:
I was writing in my code:
ErrorCheck ec = new ErrorCheck();
String error = ec.error();
and then was calling in catch block
ec.errorMsg(error+"SendEmail.send()", e);
I removed from all classes error variable that was storing ec.error(); and corrected in my main class method errorMsg of ErrorCheck.java as following:
String finalSubject = error()+subject;
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
Now its working fine
Upvotes: 0