我正在运行一个由另一个人编写的Java程序,该程序的数据比最初为该程序设计的数据多,例如输入文件的10倍,大致是二次运行时.我遇到了不同的问题,现在的目的是一点一点地解决它们,并感谢我能得到的所有帮助 - 非常感谢您的建议!
在执行期间,当已经打印了大量输出(重定向到文件)时,我得到以下输出:
Exception in thread "main" java.lang.StackOverflowError
at java.io.PrintStream.write(PrintStream.java:480)
[...]
at java.io.PrintStream.write(PrintStream.java:480)
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪是第一件令我困惑的事情,因为它是一次又一次地重复同一条线.此外,它无意在代码或执行中出现问题.
我的想法/研究
为PrintStream
搜索"PrintStream"后只搜索代码片段
// reset output stream to suppress the annoying output of the Apache batik library. Gets reset after lib call.
OutputStream tmp=System.out;
System.setOut(new PrintStream(new org.apache.commons.io.output.NullOutputStream()));
drawRes.g2d.stream(new FileWriter(svgFilePath), false);
System.setOut(new PrintStream(tmp));
Run Code Online (Sandbox Code Playgroud)征求意见
如果您对正在进行的工作有什么建议,那么Java代码具体做什么,请帮助我理解它.特别是堆栈跟踪让我感到沮丧,因为它没有提供开始修复的地方.我也很感谢有关如何解决此问题,获取堆栈跟踪,修复代码以避免StackOverflow等的一般方法.
一些系统环境事实
Java的
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (IcedTea 3.3.0) (suse-28.1-x86_64)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode) …Run Code Online (Sandbox Code Playgroud)