Hi all,
I have a java program which runs repeatedly by calling to main functions in a loop based on a condition ..But after running for some time(say 30 minutes),it shows the follwing error and it terminate the program execution.But as per my requirement i want to run this program for several hours or time without showing any error and terminating the program.
Exception in thread "main" java.lang.StackOverflowError
at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(Unkno wn Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at pitstop.automation1.main(automation1.java:18)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
at pitstop.automation1.main(automation1.java:298)
Could anyone please tell me what is the exact reason for this and how to fix this error.
The code for the same program is below:
package pitstop; import java.io.*; import java.util.*; import java.io.Closeable; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FilenameFilter; import java.io.IOException; public class automation1 { public static void main(String[] args) throws InterruptedException { System.out.println("--"); String str3=null; String fNameOne = "D:\\textfile\\"; File myDir=new File(fNameOne); //System.out.println("myDir:" +myDir); FilenameFilter select=new FileListFilter("","txt"); File[] content=myDir.listFiles(select); String filepath=null; String fName=null; String fileName = null; String fileName1=null; File dir = new File(fNameOne); String[] chld = dir.list(); // System.out.println("dir length:" +chld.length ); for(int i = 0; i < chld.length; i++){ fileName = chld[i]; System.out.println("Filename:"+fileName); } Thread t=new Thread(); t.sleep(1000); //if(content!=null){ for(int i = 0; i < chld.length; i++){ fileName1 = chld[i]; System.out.println("Fname:"+fNameOne); System.out.println("Filename1:"+fileName1); // switch(1){ // case 1:{ fName = fNameOne+fileName1; System.out.println("Fname1:" +fName); String thisLine; //string variable which take each line at a time FileInputStream fis = null; try { fis = new FileInputStream(fName); } catch (FileNotFoundException e) { // TODO Auto-generated catch block // e.printStackTrace(); } DataInputStream in = new DataInputStream(fis); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine = null; String replacewith="\\"; String strLine1=null; //Read File Line By Line // while (strLine != null) { try { while ((strLine = br.readLine()) != null) { //while ((thisLine = in.readLine()) != null) // Print the content on the console System.out.println (strLine); String str=strLine.substring(0,1); String str1=strLine.replaceFirst(str,"" ); String str2=str1.replaceFirst("/", ":\\\\"); str3=str2.replaceAll("/","\\\\"); System.out.println ("str11:" +str3); /* strLine=strLine.replaceAll("/d","D:"); System.out.println ("str:" +strLine); strLine1=strLine.replaceAll("/","\\\\" ); System.out.println ("str11:" +strLine1); */ } // System.out.println("str111" +strLine1); File f=new File(str3); String filename=f.getName(); filepath=f.getParent(); System.out.println("filepath:" +filepath); InputStream oInStream = new FileInputStream(str3); OutputStream oOutStream = new FileOutputStream("D:\\pitstop\\in\\" +filename); // Transfer bytes from in to out byte[] oBytes = new byte[1024]; int nLength; BufferedInputStream oBuffInputStream = new BufferedInputStream( oInStream ); while ((nLength = oBuffInputStream.read(oBytes)) > 0) { oOutStream.write(oBytes, 0, nLength); } oInStream.close(); oOutStream.close(); in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // } //Close the input stream Thread t1=new Thread(); t1.sleep(1000); System.out.println("FileName1111:" +fName); File ff=new File(fName); System.out.println("ff" +ff); boolean s=ff.delete(); System.out.println("s" +s); if (!s) { System.out.println("File not deleted"); // File was not successfully moved } String fName1 = "D:\\pitstop\\out"; File myDir1=new File(fName1); //System.out.println("myDir:" +myDir); FilenameFilter select1=new FileListFilter("","pdf"); File[] content1=myDir1.listFiles(select1); File dir4 = new File(fName1); String[] chld4 = dir4.list(); System.out.println("chld4:" +chld4.length); if(chld4.length==0){ String fName2 = "D:\\checkpdf\\pass\\"; File myDir2=new File(fName2); //System.out.println("myDir:" +myDir); FilenameFilter select2=new FileListFilter("","pdf"); File[] content2=myDir2.listFiles(select2); String fileName3 = null; File dir3 = new File(fName2); String[] chld1 = dir3.list(); // System.out.println("dir length:" +chld.length ); for(int j = 0; j < chld1.length; j++){ fileName3 = chld1[j]; // System.out.println("Filename3:" +fileName3); } // System.out.println("content2:" +content2); String fName31 = "D:\\checkpdf\\fail\\"; File myDir31=new File(fName31); //System.out.println("myDir:" +myDir); FilenameFilter select31=new FileListFilter("","pdf"); File[] content4=myDir31.listFiles(select31); System.out.println("content4:" +content4); String fileName4 = null; File dir51 = new File(fName31); String[] chld2 = dir51.list(); // System.out.println("dir length:" +chld.length ); for(int k = 0; k < chld2.length; k++){ fileName4 = chld2[k]; // System.out.println("Filename in fail:" +fileName4); } String fName5 = "D:\\checkpdf\\corrupt\\"; File myDir61=new File(fName5); //System.out.println("myDir:" +myDir); FilenameFilter select41=new FileListFilter("","pdf"); File[] content5=myDir61.listFiles(select41); String fileName5 = null; File dir61 = new File(fName5); String[] chld5 = dir61.list(); // System.out.println("dir length:" +chld.length ); for(int l = 0; l < chld5.length; l++){ fileName5 = chld5[l]; // System.out.println("Filename:"+fileName); } if(content2!=null){ System.out.println("in pass"); for(int a=0;a<chld1.length;a++){ fileName3 = chld1[a]; File file1 = new File("D:\\checkpdf\\pass\\" +fileName3 ); System.out.println("File name in pass:" +fileName3); // Destination directory File dir1 = new File(filepath); // Move file to new directory boolean success = file1.renameTo(new File(dir1, file1.getName())); if (!success) { System.out.println("File not moved from pass"); // File was not successfully moved } else System.out.println("File moved from pass"); } } if(content4!=null){ System.out.println("in fail"); File file2 = new File("D:\\checkpdf\\fail\\" +fileName4 ); System.out.println("File name in fail:" +fileName3); // Destination directory File dir7 = new File(filepath); // Move file to new directory boolean success11 = file2.renameTo(new File(dir7, file2.getName())); if (!success11) { // File was not successfully moved System.out.println("File not moved from fail"); } else System.out.println("File moved from fail"); } if(content5!=null){ System.out.println("in corrupt"); File file3 = new File("D:\\checkpdf\\corrupt\\" +fileName5 ); String readme="readme.txt"; // Destination directory File dir8 = new File(filepath); // Move file to new directory boolean success111 = file3.renameTo(new File(dir8, file3.getName())); if (!success111) { System.out.println("File not moved from corrupt"); // File was not successfully moved }else{ System.out.println("File moved from corrupt"); try { BufferedWriter out = new BufferedWriter(new FileWriter(filepath +"\\" +readme)); out.write("Invalid input file"); out.close(); } catch (IOException e) { } }} } // } } automation1.main(args); if(chld.length==0) { automation1.main(args); } } }
Here i am calling the main function again and again using automation1.main(args) at line no 299 and 304.
Please help me in this issue.
regards,
sanat