我使用了两个节点,一个是从IDE(Intellij IDEA)启动计算,另一个是已经在控制台启动(启用远程调试)的另一个节点。我正在从IDE进行调试。PrintWriter在点燃中的神秘
我没有使用peerClassLoading,我已经将jar放在控制台节点的库中。
有一行代码:System.out.println(x);
- 在两种打印都很好。但以下几行:
getPrintWriter().println(x);
getPrintWriter().flush();
只能在从IDE启动的节点上工作。 PrintWriter包装一个System.out。控制台节点在刷新期间抛出IOException - '文件句柄无效'。
这里是堆栈跟踪的截图:
,这里是与控制台节点的代码的相关部分:
提出以下建议,我重置了打印作者,问题已解决。下面是截图:
序列化语境
下面是一个启动的点火计算的部分代码:
对于控制台JVM上的节点ConsoleClient
获取seriali zed等包含的类(命令,监听器和他们的打印作家等)。在列表clients
中,所有ConsoleClient
对象都将它们的打印编写器作为System.out
的包装器,因此理想情况下,不需要可运行的标记块。请注意,如果删除了此标记的块,则IDE节点将正确打印,但不会打印控制台节点。
你能展示完整的痕迹吗? –