﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-小平的回忆</title><link>http://www.blogjava.net/zp0127/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 21 Apr 2026 06:32:11 GMT</lastBuildDate><pubDate>Tue, 21 Apr 2026 06:32:11 GMT</pubDate><ttl>60</ttl><item><title>log4j 将日志以流输出</title><link>http://www.blogjava.net/zp0127/archive/2008/06/06/206226.html</link><dc:creator>小平</dc:creator><author>小平</author><pubDate>Fri, 06 Jun 2008 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/zp0127/archive/2008/06/06/206226.html</guid><wfw:comment>http://www.blogjava.net/zp0127/comments/206226.html</wfw:comment><comments>http://www.blogjava.net/zp0127/archive/2008/06/06/206226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zp0127/comments/commentRss/206226.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zp0127/services/trackbacks/206226.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这几天做项目，需要做一个类似于控制台的界面，可以将日志回显到一个文本区域里，几经查找，反复测试写了以下测试代码。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />这是log4j.properties的配置内容<br />
&nbsp;&nbsp;&nbsp;&nbsp;l<span style="color: #000000">og4j.rootCategory</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;,WriterAppender<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.WriterAppender</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.WriterAppender<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.WriterAppender.Threshold</span><span style="color: #000000">=</span><span style="color: #000000">debug<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.WriterAppender.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout<br />
<img id="Codehighlighter1_269_277_Open_Image" onclick="this.style.display='none'; Codehighlighter1_269_277_Open_Text.style.display='none'; Codehighlighter1_269_277_Closed_Image.style.display='inline'; Codehighlighter1_269_277_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_269_277_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_269_277_Closed_Text.style.display='none'; Codehighlighter1_269_277_Open_Image.style.display='inline'; Codehighlighter1_269_277_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />log4j.appender.WriterAppender.layout.ConversionPattern</span><span style="color: #000000">=%</span><span style="color: #000000">d</span><span id="Codehighlighter1_269_277_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_269_277_Open_Text"><span style="color: #000000">{ISO8601}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">p&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">m</span><span style="color: #000000">%</span><span style="color: #000000">n<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
主程序<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.PipedReader;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.PipedWriter;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.Writer;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.log4j.Appender;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.log4j.Logger;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.log4j.WriterAppender;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_210_843_Open_Image" onclick="this.style.display='none'; Codehighlighter1_210_843_Open_Text.style.display='none'; Codehighlighter1_210_843_Closed_Image.style.display='inline'; Codehighlighter1_210_843_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_210_843_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_210_843_Closed_Text.style.display='none'; Codehighlighter1_210_843_Open_Image.style.display='inline'; Codehighlighter1_210_843_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Log4jMain&nbsp;</span><span id="Codehighlighter1_210_843_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_210_843_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Logger&nbsp;logger&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Logger.getLogger(Log4jMain.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_318_839_Open_Image" onclick="this.style.display='none'; Codehighlighter1_318_839_Open_Text.style.display='none'; Codehighlighter1_318_839_Closed_Image.style.display='inline'; Codehighlighter1_318_839_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_318_839_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_318_839_Closed_Text.style.display='none'; Codehighlighter1_318_839_Open_Image.style.display='inline'; Codehighlighter1_318_839_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;arg)&nbsp;</span><span id="Codehighlighter1_318_839_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_318_839_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger&nbsp;root&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Logger.getRootLogger();<br />
<img id="Codehighlighter1_372_809_Open_Image" onclick="this.style.display='none'; Codehighlighter1_372_809_Open_Text.style.display='none'; Codehighlighter1_372_809_Closed_Image.style.display='inline'; Codehighlighter1_372_809_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_372_809_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_372_809_Closed_Text.style.display='none'; Codehighlighter1_372_809_Open_Image.style.display='inline'; Codehighlighter1_372_809_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_372_809_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_372_809_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Appender&nbsp;appender&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;root.getAppender(</span><span style="color: #000000">"</span><span style="color: #000000">WriterAppender</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PipedReader&nbsp;reader&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PipedReader();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writer&nbsp;writer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PipedWriter(&nbsp;reader)&nbsp;;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((WriterAppender)&nbsp;appender).setWriter(writer);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;t&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;AaaThread(reader);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.start();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger&nbsp;logger&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Logger.getLogger(Log4jMain.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.error(</span><span style="color: #000000">"</span><span style="color: #000000">asdf</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info(</span><span style="color: #000000">"</span><span style="color: #000000">asdf</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(</span><span style="color: #000000">"</span><span style="color: #000000">asdf</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.fatal(</span><span style="color: #000000">"</span><span style="color: #000000">asdf</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//hh是一个class，test方法里只有几个logger.info("aaa"),用于测试用，这东西可以去掉<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HH().test();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_831_835_Open_Image" onclick="this.style.display='none'; Codehighlighter1_831_835_Open_Text.style.display='none'; Codehighlighter1_831_835_Closed_Image.style.display='inline'; Codehighlighter1_831_835_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_831_835_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_831_835_Closed_Text.style.display='none'; Codehighlighter1_831_835_Open_Image.style.display='inline'; Codehighlighter1_831_835_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;</span><span id="Codehighlighter1_831_835_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_831_835_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
因为log4j提供的是&nbsp;Writer，所以通过使用PipedWriter连接到PipedReader，并通过一个thread来处理PipedReader的数据就可以回显了。如果你需要的话可以将下面的System.out.println(scanner.nextLine());改成你需要显示的地方就行了。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.PipedReader;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Scanner;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_93_327_Open_Image" onclick="this.style.display='none'; Codehighlighter1_93_327_Open_Text.style.display='none'; Codehighlighter1_93_327_Closed_Image.style.display='inline'; Codehighlighter1_93_327_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_93_327_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_93_327_Closed_Text.style.display='none'; Codehighlighter1_93_327_Open_Image.style.display='inline'; Codehighlighter1_93_327_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;AaaThread&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;Thread&nbsp;</span><span id="Codehighlighter1_93_327_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_93_327_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;PipedReader&nbsp;reader;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_155_182_Open_Image" onclick="this.style.display='none'; Codehighlighter1_155_182_Open_Text.style.display='none'; Codehighlighter1_155_182_Closed_Image.style.display='inline'; Codehighlighter1_155_182_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_155_182_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_155_182_Closed_Text.style.display='none'; Codehighlighter1_155_182_Open_Image.style.display='inline'; Codehighlighter1_155_182_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;AaaThread(PipedReader&nbsp;reader)&nbsp;</span><span id="Codehighlighter1_155_182_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_155_182_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.reader&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;reader;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_204_325_Open_Image" onclick="this.style.display='none'; Codehighlighter1_204_325_Open_Text.style.display='none'; Codehighlighter1_204_325_Closed_Image.style.display='inline'; Codehighlighter1_204_325_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_204_325_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_204_325_Closed_Text.style.display='none'; Codehighlighter1_204_325_Open_Image.style.display='inline'; Codehighlighter1_204_325_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;run()&nbsp;</span><span id="Codehighlighter1_204_325_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_204_325_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scanner&nbsp;scanner&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Scanner(reader);<br />
<img id="Codehighlighter1_275_322_Open_Image" onclick="this.style.display='none'; Codehighlighter1_275_322_Open_Text.style.display='none'; Codehighlighter1_275_322_Closed_Image.style.display='inline'; Codehighlighter1_275_322_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_275_322_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_275_322_Closed_Text.style.display='none'; Codehighlighter1_275_322_Open_Image.style.display='inline'; Codehighlighter1_275_322_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(scanner.hasNext())&nbsp;</span><span id="Codehighlighter1_275_322_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_275_322_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(scanner.nextLine());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<img src ="http://www.blogjava.net/zp0127/aggbug/206226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zp0127/" target="_blank">小平</a> 2008-06-06 09:31 <a href="http://www.blogjava.net/zp0127/archive/2008/06/06/206226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样用hibernate的hql查询查询成map或list</title><link>http://www.blogjava.net/zp0127/archive/2008/04/17/193814.html</link><dc:creator>小平</dc:creator><author>小平</author><pubDate>Thu, 17 Apr 2008 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/zp0127/archive/2008/04/17/193814.html</guid><wfw:comment>http://www.blogjava.net/zp0127/comments/193814.html</wfw:comment><comments>http://www.blogjava.net/zp0127/archive/2008/04/17/193814.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zp0127/comments/commentRss/193814.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zp0127/services/trackbacks/193814.html</trackback:ping><description><![CDATA[这里制作一个引子，具体内容比较多，而且hibernate文档里的hql篇写的很详细<br />
可以这么用：<br />
List list = getHibernateTemplate().find("select new map(t1.c1,t2.c3) from table1 t1 ,table2 t2 where t1.c1=t2.c2");<br />
这样的话list里的每个元素都是一个map，每个map里包含两个元素<br />
注意：这里的table1和table2都是class名并不是真的表名，毕竟这是hql。除了可以用map还还支持list和自定义的bean。<br />
<br />
<br />
<img src ="http://www.blogjava.net/zp0127/aggbug/193814.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zp0127/" target="_blank">小平</a> 2008-04-17 17:05 <a href="http://www.blogjava.net/zp0127/archive/2008/04/17/193814.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2的jdbc type-4驱动</title><link>http://www.blogjava.net/zp0127/archive/2008/04/17/193809.html</link><dc:creator>小平</dc:creator><author>小平</author><pubDate>Thu, 17 Apr 2008 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/zp0127/archive/2008/04/17/193809.html</guid><wfw:comment>http://www.blogjava.net/zp0127/comments/193809.html</wfw:comment><comments>http://www.blogjava.net/zp0127/archive/2008/04/17/193809.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/zp0127/comments/commentRss/193809.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zp0127/services/trackbacks/193809.html</trackback:ping><description><![CDATA[DB2的Type-4驱动真的很诡异，配了两天没配上，发现是多引了一个包。就是他----&#8220;db2java.zip（db2java.jar）&#8221;只要有了他就算你已经引入了db2jcc.jar、db2jcc_license_cisuz.jar、db2jcc_license_cu.jar也没用。<br />
不知道怎么回事，本以为多引就没错，没想到载这了。<br />
顺便吧db2 type-4的配置方法贴下面：<br />
jdbc:db2://ip:port/数据库<br />
驱动名：com.ibm.db2.jcc.DB2Driver <br />
<br />
<span style="color: red">我日他IBM！该死的IBM，我算是服了，配好的type-4驱动中文数据显示的全是乱码，准备切到type-2上试试，结构还是不行，查来查去是数据库pagecode的事，数据库的字符集改成gbk，客户端的pagecode也改成跟数据库一样的，ODBC算是能用了，type-2也能用了，然后又用type-4一试！连不上了！说字符集不匹配，上网一查说要使用IBM专用的JDK，我日了，换了IBM的JDK，配好环境变量eclipse又不能用了！我算是被IBM搞死了，一气之下也不准备再尝试type-4了。<br />
我这里用的IBM JDK1.4，db2 V8</span>
<img src ="http://www.blogjava.net/zp0127/aggbug/193809.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zp0127/" target="_blank">小平</a> 2008-04-17 16:51 <a href="http://www.blogjava.net/zp0127/archive/2008/04/17/193809.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 、串口和并口</title><link>http://www.blogjava.net/zp0127/archive/2008/04/17/193805.html</link><dc:creator>小平</dc:creator><author>小平</author><pubDate>Thu, 17 Apr 2008 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/zp0127/archive/2008/04/17/193805.html</guid><wfw:comment>http://www.blogjava.net/zp0127/comments/193805.html</wfw:comment><comments>http://www.blogjava.net/zp0127/archive/2008/04/17/193805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zp0127/comments/commentRss/193805.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zp0127/services/trackbacks/193805.html</trackback:ping><description><![CDATA[<p>近日抽风，想了解以下java与串口并口通讯的问题，上网查了半天，找到了sun几年前的一个破包，comm.jar</p>
2.0版的，遇到一个比较奇怪的问题，这个包里的demo程序用cmd可以运行，但是用eclipse编译就不能运行，一直以为是dll库和配置文件的问题，几乎将两个文件copy到了系统中全部可能出现的地方都没有解决。百般无奈之下，找到了<a href="http://blog.csdn.net/djsl6071/archive/2007/04/25/1583979.aspx">http://blog.csdn.net/djsl6071/archive/2007/04/25/1583979.aspx</a>这个博客，下载了rxtx把问题搞定了。
<img src ="http://www.blogjava.net/zp0127/aggbug/193805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zp0127/" target="_blank">小平</a> 2008-04-17 16:40 <a href="http://www.blogjava.net/zp0127/archive/2008/04/17/193805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring RMI服务的一点点心得</title><link>http://www.blogjava.net/zp0127/archive/2008/02/15/180068.html</link><dc:creator>小平</dc:creator><author>小平</author><pubDate>Fri, 15 Feb 2008 06:11:00 GMT</pubDate><guid>http://www.blogjava.net/zp0127/archive/2008/02/15/180068.html</guid><wfw:comment>http://www.blogjava.net/zp0127/comments/180068.html</wfw:comment><comments>http://www.blogjava.net/zp0127/archive/2008/02/15/180068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zp0127/comments/commentRss/180068.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zp0127/services/trackbacks/180068.html</trackback:ping><description><![CDATA[如果RMI客户端链接补上服务器可能是以下情况导致的：<br />
1、网络不通<br />
2、端口占用<br />
3、防火墙（客户端机器的防火墙和服务器端的防火墙都有可能）<br />
4、服务器端所在机器安装了linux虚拟机，或者使用的linux或者unix系统<br />
排除办法：<br />
前三种情况都很好解决，主要是最后一个，需要在rmi服务启动时加上一句<br />
java&nbsp; -Djava.rmi.server.hostname=localhost &#8230;&#8230;<br />
其中localhost可以强制定义为机器的IP地址&nbsp;<br />
<img src ="http://www.blogjava.net/zp0127/aggbug/180068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zp0127/" target="_blank">小平</a> 2008-02-15 14:11 <a href="http://www.blogjava.net/zp0127/archive/2008/02/15/180068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>