admin管理员组

文章数量:1612098

一、发现问题

最近接到维护同事的通知说有个java写的软件不能正常运行了,拿来日志发现是以下异常:

 java.lang.IllegalStateException: Current state = FLUSHED, new state = CODING_END

INFO   | jvm 1    | 2010/11/26 00:01:25 |  at java.nio.charset.CharsetEncoder.throwIllegalStateException(CharsetEncoder.java:933) INFO   | jvm 1    | 2010/11/26 00:01:25 |  at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:529) INFO   | jvm 1    | 2010/11/26 00:01:25 |  at sun.nio.cs.StreamEncoder$CharsetSE.flushLeftoverChar(StreamEncoder.java:358) INFO   | jvm 1    | 2010/11/26 00:01:25 |  at sun.nio.cs.StreamEncoder$CharsetSE.implClose(StreamEncoder.java:414) INFO   | jvm 1    | 2010/11/26 00:01:25 |  at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:160) INFO   | jvm 1    | 2010/11/26 00:01:25 |  at java.io.OutputStreamWriter.close(OutputStreamWriter.java:222)   二、分析问题   (1)第一感觉是编码问题,将该软件在本机运行发现一切正常。检查源码中的中文,未发现异常字符,且可以在本机正常输出中文字符。 (2)难道是病毒惹的祸?运行环境是在局域网中运行的,而且有严格的管理规定,还有杀毒软件把关,这个可能性基本可以排除。 (3)检查该软件所在的硬盘分区,发现该分区剩余空间几乎为零。原来是这样,该软件运行需要记录运行信息到日志文件,由于异常日志信息是没有及时清除造成磁盘空间被占满不能让软件写日志,从而导致软件无法启动。   三、解决问题   清除一些无用的日志文件后,软件可以正常启动,记录日志信息,问题解决。   四、总结     发现该问题后,在网上查找了很多资料,发现这方面的资料较少,而且讲的比较深,没想到竟然是这样一个“小”问题。经过这次问题的解决过程,我觉得软件开发过程不仅需要学习新技术新方法,同样需要在不断解决这类“小”问题的过程中积累经验,这样才能提高自己的能力,才能有实力解决“大”问题。

本文标签: IllegalStateExceptionlangJavaCurrentCODINGEND