锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品字幕在线观看,666精品国产精品亚洲,亚洲视频在线免费播放http://www.tkk7.com/yaominxi/category/22281.html蹇冩佸喅瀹氳涓猴紝琛屼負鍐沖畾涔犳儻錛屼範鎯喅瀹氬懡榪? zh-cnWed, 09 May 2007 11:18:21 GMTWed, 09 May 2007 11:18:21 GMT60涓漢甯哥敤鐨凧AVA璧勬簮緗戠珯http://www.tkk7.com/yaominxi/archive/2007/05/08/116025.htmlymxymxTue, 08 May 2007 11:23:00 GMThttp://www.tkk7.com/yaominxi/archive/2007/05/08/116025.htmlhttp://www.tkk7.com/yaominxi/comments/116025.htmlhttp://www.tkk7.com/yaominxi/archive/2007/05/08/116025.html#Feedback0http://www.tkk7.com/yaominxi/comments/commentRss/116025.htmlhttp://www.tkk7.com/yaominxi/services/trackbacks/116025.html涓漢甯哥敤鐨凧AVA璧勬簮緗戠珯

涓.JAVA鐢靛瓙涔?/p>

http://www.java-cn.com/book/

浼樼偣錛氫功綾嶉噺澶э紝緇忓父鏇存柊錛屾暀鑲茬綉涓嬭澆閫熷害瓚呭揩

涓嶈凍錛氭瘡澶╁彧鑳戒笅杞?鏈?/p>

ymx 2007-05-08 19:23 鍙戣〃璇勮
]]>
鍗庝負鍏徃 java 闈㈣瘯棰?/title><link>http://www.tkk7.com/yaominxi/archive/2006/05/19/47096.html</link><dc:creator>ymx</dc:creator><author>ymx</author><pubDate>Fri, 19 May 2006 10:10:00 GMT</pubDate><guid>http://www.tkk7.com/yaominxi/archive/2006/05/19/47096.html</guid><wfw:comment>http://www.tkk7.com/yaominxi/comments/47096.html</wfw:comment><comments>http://www.tkk7.com/yaominxi/archive/2006/05/19/47096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/yaominxi/comments/commentRss/47096.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/yaominxi/services/trackbacks/47096.html</trackback:ping><description><![CDATA[ <div id="6666666" class="postTitle"><a ><img width="15" height="13" border="0" src="http://blog.csdn.net/images/zhuan.gif"/> 鍗庝負鍏徃 java 闈㈣瘯棰?/a> <script xml:space="preserve" type="text/javascript" language="javascript"> // ocument.title="鍗庝負鍏徃 java 闈㈣瘯棰?- "+document.title // </script></div> <div id="6616661" class="postText"> <p>絎竴閮ㄥ垎錛氶夋嫨棰?br/>QUESTION NO: 1<br/>1銆乸ublic class Test {<br/>public static void changeStr(String str){<br/>str="welcome";<br/>}<br/>public static void main(String[] args) {<br/>String str="1234";<br/>changeStr(str);<br/>System.out.println(str);<br/>}<br/>}<br/>Please write the output result 錛?/p> <p>QUESTION NO:2<br/>1. public class Test {<br/>2. static boolean foo(char c) {<br/>3. System.out.print(c);<br/>4. return true;<br/>5. }<br/>6. public static void main( String[] argv ) {<br/>7. int i =0;<br/>8. for ( foo('A'); foo('B')&&(i<2); foo('C')){<br/>9. i++ ;<br/>10. foo('D');<br/>12. }<br/>13. }<br/>14. }<br/>What is the result?<br/>A. ABDCBDCB<br/>B. ABCDABCD<br/>C. Compilation fails.<br/>D. An exception is thrown at runtime.</p> <p>QUESTION NO: 3<br/>1. class A {<br/>2. protected int method1(int a, int b) { return 0; }<br/>3. }<br/>Which two are valid in a class that extends class A? (Choose two)<br/>A. public int method1(int a, int b) { return 0; }<br/>B. private int method1(int a, int b) { return 0; }<br/>C. private int method1(int a, long b) { return 0; }<br/>D. public short method1(int a, int b) { return 0; }<br/>E. static protected int method1(int a, int b) { return 0; }</p> <p>QUESTION NO: 4<br/>1. public class Outer{<br/>2. public void someOuterMethod() {<br/>3. // Line 3<br/>4. }<br/>5. public class Inner{}<br/>6. public static void main( String[]argv ) {<br/>7. Outer o = new Outer();<br/>8. // Line 8<br/>9. }<br/>10. }<br/>Which instantiates an instance of Inner?<br/>A. new Inner(); // At line 3<br/>B. new Inner(); // At line 8<br/>C. new o.Inner(); // At line 8<br/>D. new Outer.Inner(); // At line 8//new Outer().new Inner()</p> <p>QUESTION NO: 5<br/>Which method is used by a servlet to place its session ID in a URL that is written to the servlet's response output stream?<br/>A. The encodeURL method of the HttpServletRequest interface.<br/>B. The encodeURL method of the HttpServletResponse interface.<br/>C. The rewriteURL method of the HttpServletRequest interface.<br/>D. The rewriteURL method of the HttpServletResponse interface.</p> <p>QUESTION NO: 6<br/>Which two are equivalent? (Choose two)<br/>A. <%= YoshiBean.size%><br/>B. <%= YoshiBean.getSize()%><br/>C. <%= YoshiBean.getProperty("size")%><br/>D. <jsp:getProperty id="YoshiBean" param="size"/><br/>E. <jsp:getProperty name="YoshiBean" param="size"/><br/>F. <jsp:getProperty id="YoshiBean" property="size"/><br/>G. <jsp:getProperty name="YoshiBean" property="size"/></p> <p>QUESTION NO: 7<br/>Which of the following statements regarding the lifecycle of a session bean are correct?<br/>1. java.lang.IllegalStateException is thrown if SessionContext.getEJBObject() is invoked when a stateful session bean instance is passivated.<br/>2. SessionContext.getRollbackOnly() does not throw an exception when a session bean with bean-managed transaction demarcation is activated.<br/>3. An exception is not thrown when SessionContext.getUserTransaction() is called in the afterBegin method of a bean with container-managed transactions.<br/>4. JNDI access to java:comp/env is permitted in all the SessionSynchronization methods of a stateful session bean with container-managed transaction demarcation.<br/>5. Accessing resource managers in the SessionSynchronization.afterBegin method of a stateful session bean with bean-managed transaction does not throw an exception.</p> <p><br/>絎簩閮ㄥ垎錛氭蹇甸<br/>1錛?鎻忚堪Struts浣撶郴緇撴瀯錛熷搴斿悇涓儴鍒嗙殑寮鍙戝伐浣滀富瑕佸寘鎷摢浜涳紵</p> <br/><br/><br/><br/><br/><br/><p>2錛?XML鍖呮嫭鍝簺瑙i噴鎶鏈紝鍖哄埆鏄粈涔堬紵</p> <br/><br/><p><br/>3錛?JSP鏈夊摢浜涘唴緗璞″拰鍔ㄤ綔錛熷畠浠殑浣滅敤鍒嗗埆鏄粈涔堬紵</p> <br/><br/><br/><br/><br/><br/><p><br/>4銆丼QL闂瓟棰?br/>SELECT * FROM TABLE<br/>鍜?br/>SELECT * FROM TABLE<br/>WHERE NAME LIKE '%%' AND ADDR LIKE '%%'<br/>AND (1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%'<br/>OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%' )<br/>鐨勬绱㈢粨鏋滀負浣曚笉鍚岋紵</p> <br/><p>5銆丼QL闂瓟棰?br/>琛ㄧ粨鏋勶細<br/>1銆?琛ㄥ悕錛歡_cardapply<br/>瀛楁(瀛楁鍚?綾誨瀷/闀垮害)錛?br/>g_applyno varchar 8錛?/鐢寵鍗曞彿錛堝叧閿瓧錛?br/>g_applydate bigint 8錛?/鐢寵鏃ユ湡<br/>g_state varchar 2錛?/鐢寵鐘舵?br/>2銆?琛ㄥ悕錛歡_cardapplydetail<br/>瀛楁(瀛楁鍚?綾誨瀷/闀垮害)錛?br/>g_applyno varchar 8錛?/鐢寵鍗曞彿錛堝叧閿瓧錛?br/>g_name varchar 30錛?/鐢寵浜哄鍚?br/>g_idcard varchar 18錛?/鐢寵浜鴻韓浠借瘉鍙?br/>g_state varchar 2錛?/鐢寵鐘舵?br/>鍏朵腑錛屼袱涓〃鐨勫叧鑱斿瓧孌典負鐢寵鍗曞彿銆?br/>棰樼洰錛?br/>1銆?鏌ヨ韜喚璇佸彿鐮佷負440401430103082鐨勭敵璇鋒棩鏈?br/>2銆?鏌ヨ鍚屼竴涓韓浠借瘉鍙風爜鏈変袱鏉′互涓婅褰曠殑韜喚璇佸彿鐮佸強璁板綍涓暟<br/>3銆?灝嗚韓浠借瘉鍙風爜涓?40401430103082鐨勮褰曞湪涓や釜琛ㄤ腑鐨勭敵璇風姸鎬佸潎鏀逛負07<br/>4銆?鍒犻櫎g_cardapplydetail琛ㄤ腑鎵鏈夊鏉庣殑璁板綍</p> </div> <img src ="http://www.tkk7.com/yaominxi/aggbug/47096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/yaominxi/" target="_blank">ymx</a> 2006-05-19 18:10 <a href="http://www.tkk7.com/yaominxi/archive/2006/05/19/47096.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浣跨敤Log4j榪涜鏃ュ織鎿嶄綔http://www.tkk7.com/yaominxi/archive/2006/04/05/39351.htmlymxymxWed, 05 Apr 2006 04:38:00 GMThttp://www.tkk7.com/yaominxi/archive/2006/04/05/39351.htmlhttp://www.tkk7.com/yaominxi/comments/39351.htmlhttp://www.tkk7.com/yaominxi/archive/2006/04/05/39351.html#Feedback0http://www.tkk7.com/yaominxi/comments/commentRss/39351.htmlhttp://www.tkk7.com/yaominxi/services/trackbacks/39351.html1. 姒傝堪

1.1. 鑳屾櫙

鍦ㄥ簲鐢ㄧ▼搴忎腑娣誨姞鏃ュ織璁板綍鎬葷殑鏉ヨ鍩轟簬涓変釜鐩殑錛氱洃瑙嗕唬鐮佷腑鍙橀噺鐨勫彉鍖栨儏鍐碉紝鍛ㄦ湡鎬х殑璁板綍鍒版枃浠朵腑渚涘叾浠栧簲鐢ㄨ繘琛岀粺璁″垎鏋愬伐浣滐紱璺熻釜浠g爜榪愯鏃惰建榪癸紝浣滀負鏃ュ悗瀹¤鐨勪緷鎹紱鎷呭綋闆嗘垚寮鍙戠幆澧冧腑鐨勮皟璇曞櫒鐨勪綔鐢紝鍚戞枃浠舵垨鎺у埗鍙版墦鍗頒唬鐮佺殑璋冭瘯淇℃伅銆?/p>

鏈鏅氱殑鍋氭硶灝辨槸鍦ㄤ唬鐮佷腑宓屽叆璁稿鐨勬墦鍗拌鍙ワ紝榪欎簺鎵撳嵃璇彞鍙互杈撳嚭鍒版帶鍒跺彴鎴栨枃浠朵腑錛屾瘮杈冨ソ鐨勫仛娉曞氨鏄瀯閫犱竴涓棩蹇楁搷浣滅被鏉ュ皝瑁呮綾繪搷浣滐紝鑰屼笉鏄涓緋誨垪鐨勬墦鍗拌鍙ュ厖鏂ヤ簡浠g爜鐨勪富浣撱?/p>

1.2. Log4j綆浠?/span>

鍦ㄥ己璋冨彲閲嶇敤緇勪歡寮鍙戠殑浠婂ぉ錛岄櫎浜嗚嚜宸變粠澶村埌灝懼紑鍙戜竴涓彲閲嶇敤鐨勬棩蹇楁搷浣滅被澶栵紝Apache涓烘垜浠彁渚涗簡涓涓己鏈夊姏鐨勬棩蹇楁搷浣滃寘-Log4j銆?/p>

Log4j鏄疉pache鐨勪竴涓紑鏀炬簮浠g爜欏圭洰錛岄氳繃浣跨敤Log4j錛屾垜浠彲浠ユ帶鍒舵棩蹇椾俊鎭緭閫佺殑鐩殑鍦版槸鎺у埗鍙般佹枃浠躲丟UI緇勪歡銆佺敋鑷蟲槸濂楁帴鍙f湇鍔″櫒銆丯T鐨勪簨浠惰褰曞櫒銆乁NIX Syslog瀹堟姢榪涚▼絳夛紱鎴戜滑涔熷彲浠ユ帶鍒舵瘡涓鏉℃棩蹇楃殑杈撳嚭鏍煎紡錛涢氳繃瀹氫箟姣忎竴鏉℃棩蹇椾俊鎭殑綰у埆錛屾垜浠兘澶熸洿鍔犵粏鑷村湴鎺у埗鏃ュ織鐨勭敓鎴愯繃紼嬨傛渶浠や漢鎰熷叴瓚g殑灝辨槸錛岃繖浜涘彲浠ラ氳繃涓涓厤緗枃浠舵潵鐏墊椿鍦拌繘琛岄厤緗紝鑰屼笉闇瑕佷慨鏀瑰簲鐢ㄧ殑浠g爜銆?/p>

姝ゅ錛岄氳繃Log4j鍏朵粬璇█鎺ュ彛錛屾偍鍙互鍦–銆丆++銆?Net銆丳L/SQL紼嬪簭涓嬌鐢↙og4j錛屽叾璇硶鍜岀敤娉曚笌鍦↗ava紼嬪簭涓竴鏍鳳紝浣垮緱澶氳璦鍒嗗竷寮忕郴緇熷緱鍒頒竴涓粺涓涓鑷寸殑鏃ュ織緇勪歡妯″潡銆傝屼笖錛岄氳繃浣跨敤鍚勭絎笁鏂規墿灞曪紝鎮ㄥ彲浠ュ緢鏂逛究鍦板皢Log4j闆嗘垚鍒癑2EE銆丣INI鐢氳嚦鏄疭NMP搴旂敤涓?/p>

鏈枃浠嬬粛鐨凩og4j鐗堟湰鏄?.2.3銆備綔鑰呰瘯鍥鵑氳繃涓涓畝鍗曠殑瀹㈡埛/鏈嶅姟鍣↗ava紼嬪簭渚嬪瓙瀵規瘮浣跨敤涓庝笉浣跨敤Log4j 1.2.3鐨勫樊鍒紝騫惰緇嗚瑙d簡鍦ㄥ疄璺典腑鏈甯鎬嬌鐢↙og4j鐨勬柟娉曞拰姝ラ銆傚湪寮鴻皟鍙噸鐢ㄧ粍浠跺紑鍙戠殑浠婂ぉ錛岀浉淇og4j灝嗕細緇欏箍澶х殑璁捐寮鍙戜漢鍛樺甫鏉ユ柟渚褲傚姞鍏ュ埌Log4j鐨勯槦浼嶆潵鍚э紒

2. 涓涓畝鍗曠殑渚嬪瓙

鎴戜滑鍏堟潵鐪嬩竴涓畝鍗曠殑渚嬪瓙錛屽畠鏄竴涓敤Java瀹炵幇鐨勫鎴?鏈嶅姟鍣ㄧ綉緇滅▼搴忋傚垰寮濮嬫垜浠笉浣跨敤Log4j錛岃屾槸浣跨敤浜嗕竴緋誨垪鐨勬墦鍗拌鍙ワ紝鐒跺悗鎴戜滑灝嗕嬌鐢↙og4j鏉ュ疄鐜板畠鐨勬棩蹇楀姛鑳姐傝繖鏍鳳紝澶у灝卞彲浠ユ竻妤氬湴姣旇緝鍑哄墠鍚庝袱涓唬鐮佺殑宸埆銆?/p>

2.1. 涓嶄嬌鐢↙og4j

2.1.1. 瀹㈡埛紼嬪簭

package log4j ;

import java.io.* ;
import java.net.* ;

/**
 *
 * <p> Client Without Log4j </p>
 * <p> Description: a sample with log4j</p>
 * @version 1.0
 */
public class ClientWithoutLog4j {

    /**
     *
     * @param args
     */
    public static void main ( String args [] ) {

        String welcome = null;
        String response = null;
        BufferedReader reader = null;
        PrintWriter writer = null;
        InputStream in = null;
        OutputStream out = null;
        Socket client = null;

        try {
            client = new Socket ( "localhost", 8001 ) ;
            System.out.println ( "info: Client socket: " + client ) ;
            in = client.getInputStream () ;
            out = client.getOutputStream () ;
        } catch ( IOException e ) {
            System.out.println ( "error: IOException : " + e ) ;
            System.exit ( 0 ) ;
        }

        try{
            reader = new BufferedReader( new InputStreamReader ( in ) ) ;
            writer = new PrintWriter ( new OutputStreamWriter ( out ), true ) ;

            welcome = reader.readLine () ;
            System.out.println ( "debug: Server says: '" + welcome + "'" ) ;

            System.out.println ( "debug: HELLO" ) ;
            writer.println ( "HELLO" ) ;
            response = reader.readLine () ;
            System.out.println ( "debug: Server responds: '" + response + "'") ;

            System.out.println ( "debug: HELP" ) ;
            writer.println ( "HELP" ) ;
            response = reader.readLine () ;
            System.out.println ( "debug: Server responds: '" + response + "'" ) ;

            System.out.println ( "debug: QUIT" ) ;
            writer.println ( "QUIT" ) ;
        } catch ( IOException e ) {
            System.out.println ( "warn: IOException in client.in.readln()" ) ;
            System.out.println ( e ) ;
        }
        try{
            Thread.sleep ( 2000 ) ;
        } catch ( Exception ignored ) {}
    }
}

2.1.2. 鏈嶅姟鍣ㄧ▼搴?/strong>

package log4j ;

import java.util.* ;
import java.io.* ;
import java.net.* ;

/**
 *
 * <p> Server Without Log4j </p>
 * <p> Description: a sample with log4j</p>
 * @version 1.0
 */
public class ServerWithoutLog4j {

    final static int SERVER_PORT = 8001 ; // this server's port

    /**
     *
     * @param args
     */
    public static void main ( String args [] ) {
        String clientRequest = null;
        BufferedReader reader = null;
        PrintWriter writer = null;
        ServerSocket server = null;
        Socket socket = null;
        InputStream in = null;
        OutputStream out = null;

        try {
            server = new ServerSocket ( SERVER_PORT ) ;
            System.out.println ( "info: ServerSocket before accept: " + server ) ;
            System.out.println ( "info: Java server without log4j, on-line!" ) ;

            // wait for client's connection
            socket = server.accept () ;
            System.out.println ( "info: ServerSocket after accept: " + server )  ;

            in = socket.getInputStream () ;
            out = socket.getOutputStream () ;

        } catch ( IOException e ) {
            System.out.println( "error: Server constructor IOException: " + e ) ;
            System.exit ( 0 ) ;
        }
        reader = new BufferedReader ( new InputStreamReader ( in ) ) ;
        writer = new PrintWriter ( new OutputStreamWriter ( out ) , true ) ;

        // send welcome string to client
        writer.println ( "Java server without log4j, " + new Date () ) ;

        while ( true ) {
            try {
                // read from client
                clientRequest = reader.readLine () ;
                System.out.println ( "debug: Client says: " + clientRequest ) ;
                if ( clientRequest.startsWith ( "HELP" ) ) {
                    System.out.println ( "debug: OK!" ) ;
                    writer.println ( "Vocabulary: HELP QUIT" ) ;
                }
                else {
                    if ( clientRequest.startsWith ( "QUIT" ) ) {
                        System.out.println ( "debug: OK!" ) ;
                        System.exit ( 0 ) ;
                    }
                    else{
                        System.out.println ( "warn: Command '" + 
      clientRequest + "' not understood." ) ;
                        writer.println ( "Command '" + clientRequest 
      + "' not understood." ) ;
                    }
                }
            } catch ( IOException e ) {
                System.out.println ( "error: IOException in Server " + e ) ;
                System.exit ( 0 ) ;
            }
        }
    }
}

2.2. 榪佺Щ鍒癓og4j

2.2.1. 瀹㈡埛紼嬪簭

package log4j ;

import java.io.* ;
import java.net.* ;

// add for log4j: import some package
import org.apache.log4j.PropertyConfigurator ;
import org.apache.log4j.Logger ;
import org.apache.log4j.Level ;

/**
 *
 * <p> Client With Log4j </p>
 * <p> Description: a sample with log4j</p>
 * @version 1.0
 */
public class ClientWithLog4j {

    /*
    add for log4j: class Logger is the central class in the log4j package.
    we can do most logging operations by Logger except configuration.
    getLogger(...): retrieve a logger by name, if not then create for it.
    */
    static Logger logger = Logger.getLogger 
 ( ClientWithLog4j.class.getName () ) ;

    /**
     *
     * @param args : configuration file name
     */
    public static void main ( String args [] ) {

        String welcome = null ;
        String response = null ;
        BufferedReader reader = null ;
        PrintWriter writer = null ;
        InputStream in = null ;
        OutputStream out = null ;
        Socket client = null ;

        /*
        add for log4j: class BasicConfigurator can quickly configure the package.
        print the information to console.
        */
        PropertyConfigurator.configure ( "ClientWithLog4j.properties" ) ;

        // add for log4j: set the level
//        logger.setLevel ( ( Level ) Level.DEBUG ) ;

        try{
            client = new Socket( "localhost" , 8001 ) ;

            // add for log4j: log a message with the info level
            logger.info ( "Client socket: " + client ) ;

            in = client.getInputStream () ;
            out = client.getOutputStream () ;
        } catch ( IOException e ) {

            // add for log4j: log a message with the error level
            logger.error ( "IOException : " + e ) ;

            System.exit ( 0 ) ;
        }

        try{
            reader = new BufferedReader ( new InputStreamReader ( in ) ) ;
            writer = new PrintWriter ( new OutputStreamWriter ( out ), true ) ;

            welcome = reader.readLine () ;

            // add for log4j: log a message with the debug level
            logger.debug ( "Server says: '" + welcome + "'" ) ;

            // add for log4j: log a message with the debug level
            logger.debug ( "HELLO" ) ;

            writer.println ( "HELLO" ) ;
            response = reader.readLine () ;

            // add for log4j: log a message with the debug level
            logger.debug ( "Server responds: '" + response + "'" ) ;

            // add for log4j: log a message with the debug level
            logger.debug ( "HELP" ) ;

            writer.println ( "HELP" ) ;
            response = reader.readLine () ;

            // add for log4j: log a message with the debug level
            logger.debug ( "Server responds: '" + response + "'") ;

            // add for log4j: log a message with the debug level
            logger.debug ( "QUIT" ) ;

            writer.println ( "QUIT" ) ;
        } catch ( IOException e ) {

            // add for log4j: log a message with the warn level
            logger.warn ( "IOException in client.in.readln()" ) ;

            System.out.println ( e ) ;
        }
        try {
            Thread.sleep ( 2000 ) ;
        } catch ( Exception ignored ) {}
    }
}

2.2.2. 鏈嶅姟鍣ㄧ▼搴?/strong>

package log4j;

import java.util.* ;
import java.io.* ;
import java.net.* ;

// add for log4j: import some package
import org.apache.log4j.PropertyConfigurator ;
import org.apache.log4j.Logger ;
import org.apache.log4j.Level ;

/**
 *
 * <p> Server With Log4j </p>
 * <p> Description: a sample with log4j</p>
 * @version 1.0
 */
public class ServerWithLog4j {

    final static int SERVER_PORT = 8001 ; // this server's port

    /*
    add for log4j: class Logger is the central class in the log4j package.
    we can do most logging operations by Logger except configuration.
    getLogger(...): retrieve a logger by name, if not then create for it.
    */
    static Logger logger = Logger.getLogger 
 ( ServerWithLog4j.class.getName () ) ;

    /**
     *
     * @param args
     */
    public static void main ( String args[]) {
        String clientRequest = null ;
        BufferedReader reader = null ;
        PrintWriter writer = null ;
        ServerSocket server = null ;
        Socket socket = null ;

        InputStream in = null ;
        OutputStream out = null ;

        /*
        add for log4j: class BasicConfigurator can quickly configure the package.
        print the information to console.
        */
        PropertyConfigurator.configure ( "ServerWithLog4j.properties" ) ;

        // add for log4j: set the level
//        logger.setLevel ( ( Level ) Level.DEBUG ) ;

        try{
            server = new ServerSocket ( SERVER_PORT ) ;

            // add for log4j: log a message with the info level
            logger.info ( "ServerSocket before accept: " + server ) ;

            // add for log4j: log a message with the info level
            logger.info ( "Java server with log4j, on-line!" ) ;

            // wait for client's connection
            socket = server.accept() ;

            // add for log4j: log a message with the info level
            logger.info ( "ServerSocket after accept: " + server ) ;

            in = socket.getInputStream() ;
            out = socket.getOutputStream() ;

        } catch ( IOException e ) {

            // add for log4j: log a message with the error level
            logger.error ( "Server constructor IOException: " + e ) ;
            System.exit ( 0 ) ;
        }
        reader = new BufferedReader ( new InputStreamReader ( in ) ) ;
        writer = new PrintWriter ( new OutputStreamWriter ( out ), true ) ;

        // send welcome string to client
        writer.println ( "Java server with log4j, " + new Date () ) ;

        while ( true ) {
            try {
                // read from client
                clientRequest = reader.readLine () ;

                // add for log4j: log a message with the debug level
                logger.debug ( "Client says: " + clientRequest ) ;

                if ( clientRequest.startsWith ( "HELP" ) ) {

                    // add for log4j: log a message with the debug level
                    logger.debug ( "OK!" ) ;

                    writer.println ( "Vocabulary: HELP QUIT" ) ;
                }
                else {
                    if ( clientRequest.startsWith ( "QUIT" ) ) {

                        // add for log4j: log a message with the debug level
                        logger.debug ( "OK!" ) ;

                        System.exit ( 0 ) ;
                    }
                    else {

                        // add for log4j: log a message with the warn level
                        logger.warn ( "Command '" 
      + clientRequest + "' not understood." ) ;

                        writer.println ( "Command '"
      + clientRequest + "' not understood." ) ;
                    }
                }
            } catch ( IOException e ) {

                // add for log4j: log a message with the error level
                logger.error( "IOException in Server " + e ) ;

                System.exit ( 0 ) ;
            }
        }
    }
}

2.2.3. 閰嶇疆鏂囦歡

2.2.3.1. 瀹㈡埛紼嬪簭閰嶇疆鏂囦歡

log4j.rootLogger=INFO, A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

2.2.3.2. 鏈嶅姟鍣ㄧ▼搴忛厤緗枃浠?/p>

log4j.rootLogger=INFO, A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

2.3. 姣旇緝

姣旇緝榪欎袱涓簲鐢ㄥ彲浠ョ湅鍑猴紝閲囩敤Log4j榪涜鏃ュ織鎿嶄綔鐨勬暣涓繃紼嬬浉褰撶畝鍗曟槑浜嗭紝涓庣洿鎺ヤ嬌鐢⊿ystem.out.println璇彞榪涜鏃ュ織淇℃伅杈撳嚭鐨勬柟寮忕浉姣旓紝鍩烘湰涓婃病鏈夊鍔犱唬鐮侀噺錛屽悓鏃惰兘澶熸竻妤氬湴鐞嗚В姣忎竴鏉℃棩蹇椾俊鎭殑閲嶈紼嬪害銆傞氳繃鎺у埗閰嶇疆鏂囦歡錛屾垜浠繕鍙互鐏墊椿鍦頒慨鏀規棩蹇椾俊鎭殑鏍煎紡錛岃緭鍑虹洰鐨勫湴絳夌瓑鏂歸潰錛岃屽崟綰緷闈燬ystem.out.println璇彞錛屾樉鐒墮渶瑕佸仛鏇村鐨勫伐浣溿?/p>

涓嬮潰鎴戜滑灝嗕互鍓嶉潰浣跨敤Log4j鐨勫簲鐢ㄤ綔涓轟緥瀛愶紝璇︾粏璁茶В浣跨敤Log4j鐨勪富瑕佹楠ゃ?/p>

3. Log4j鍩烘湰浣跨敤鏂規硶

Log4j鐢變笁涓噸瑕佺殑緇勪歡鏋勬垚錛氭棩蹇椾俊鎭殑浼樺厛綰э紝鏃ュ織淇℃伅鐨勮緭鍑虹洰鐨勫湴錛屾棩蹇椾俊鎭殑杈撳嚭鏍煎紡銆傛棩蹇椾俊鎭殑浼樺厛綰т粠楂樺埌浣庢湁ERROR銆乄ARN銆両NFO銆丏EBUG錛屽垎鍒敤鏉ユ寚瀹氳繖鏉℃棩蹇椾俊鎭殑閲嶈紼嬪害錛涙棩蹇椾俊鎭殑杈撳嚭鐩殑鍦版寚瀹氫簡鏃ュ織灝嗘墦鍗板埌鎺у埗鍙拌繕鏄枃浠朵腑錛涜岃緭鍑烘牸寮忓垯鎺у埗浜嗘棩蹇椾俊鎭殑鏄劇ず鍐呭銆?/p>

3.1.瀹氫箟閰嶇疆鏂囦歡

鍏跺疄鎮ㄤ篃鍙互瀹屽叏涓嶄嬌鐢ㄩ厤緗枃浠訛紝鑰屾槸鍦ㄤ唬鐮佷腑閰嶇疆Log4j鐜銆備絾鏄紝浣跨敤閰嶇疆鏂囦歡灝嗕嬌鎮ㄧ殑搴旂敤紼嬪簭鏇村姞鐏墊椿銆?/p>

Log4j鏀寔涓ょ閰嶇疆鏂囦歡鏍煎紡錛屼竴縐嶆槸XML鏍煎紡鐨勬枃浠訛紝涓縐嶆槸Java鐗規ф枃浠訛紙閿?鍊鹼級銆備笅闈㈡垜浠粙緇嶄嬌鐢↗ava鐗規ф枃浠跺仛涓洪厤緗枃浠剁殑鏂規硶錛?/p>

  1. 閰嶇疆鏍筁ogger錛屽叾璇硶涓猴細
    log4j.rootLogger = [ level ] , appenderName, appenderName, 鈥?
    鍏朵腑錛宭evel 鏄棩蹇楄褰曠殑浼樺厛綰э紝鍒嗕負OFF銆丗ATAL銆丒RROR銆乄ARN銆両NFO銆丏EBUG銆丄LL鎴栬呮偍瀹氫箟鐨勭駭鍒侺og4j寤鴻鍙嬌鐢ㄥ洓涓駭鍒紝浼樺厛綰т粠楂樺埌浣庡垎鍒槸ERROR銆乄ARN銆両NFO銆丏EBUG銆傞氳繃鍦ㄨ繖閲屽畾涔夌殑綰у埆錛屾偍鍙互鎺у埗鍒板簲鐢ㄧ▼搴忎腑鐩稿簲綰у埆鐨勬棩蹇椾俊鎭殑寮鍏熾傛瘮濡傚湪榪欓噷瀹氫箟浜咺NFO綰у埆錛屽垯搴旂敤紼嬪簭涓墍鏈塂EBUG綰у埆鐨勬棩蹇椾俊鎭皢涓嶈鎵撳嵃鍑烘潵銆?br/>appenderName灝辨槸鎸囧畾鏃ュ織淇℃伅杈撳嚭鍒板摢涓湴鏂廣傛偍鍙互鍚屾椂鎸囧畾澶氫釜杈撳嚭鐩殑鍦般?br/>
  2. 閰嶇疆鏃ュ織淇℃伅杈撳嚭鐩殑鍦癆ppender錛屽叾璇硶涓?br/>
    log4j.appender.appenderName = fully.qualified.name.of.appender.class
    log4j.appender.appenderName.option1 = value1
    鈥?log4j.appender.appenderName.option = valueN
    
    鍏朵腑錛孡og4j鎻愪緵鐨刟ppender鏈変互涓嬪嚑縐嶏細
    org.apache.log4j.ConsoleAppender錛堟帶鍒跺彴錛夛紝
    org.apache.log4j.FileAppender錛堟枃浠訛級錛?br/>org.apache.log4j.DailyRollingFileAppender錛堟瘡澶╀駭鐢熶竴涓棩蹇楁枃浠訛級錛宱rg.apache.log4j.RollingFileAppender錛堟枃浠跺ぇ灝忓埌杈炬寚瀹氬昂瀵哥殑鏃跺欎駭鐢熶竴涓柊鐨勬枃浠訛級錛?br/>org.apache.log4j.WriterAppender錛堝皢鏃ュ織淇℃伅浠ユ祦鏍煎紡鍙戦佸埌浠繪剰鎸囧畾鐨勫湴鏂癸級
  3. 閰嶇疆鏃ュ織淇℃伅鐨勬牸寮忥紙甯冨眬錛夛紝鍏惰娉曚負錛?br/>
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
    log4j.appender.appenderName.layout.option1 = value1
    鈥?log4j.appender.appenderName.layout.option = valueN
    
    鍏朵腑錛孡og4j鎻愪緵鐨刲ayout鏈変互涓嬪嚑縐嶏細
    org.apache.log4j.HTMLLayout錛堜互HTML琛ㄦ牸褰㈠紡甯冨眬錛夛紝
    org.apache.log4j.PatternLayout錛堝彲浠ョ伒媧誨湴鎸囧畾甯冨眬妯″紡錛夛紝
    org.apache.log4j.SimpleLayout錛堝寘鍚棩蹇椾俊鎭殑綰у埆鍜屼俊鎭瓧絎︿覆錛夛紝
    org.apache.log4j.TTCCLayout錛堝寘鍚棩蹇椾駭鐢熺殑鏃墮棿銆佺嚎紼嬨佺被鍒瓑絳変俊鎭級

3.2.鍦ㄤ唬鐮佷腑浣跨敤Log4j

涓嬮潰灝嗚榪板湪紼嬪簭浠g爜涓庢牱浣跨敤Log4j銆?/p>

3.2.1.寰楀埌璁板綍鍣?/strong>

浣跨敤Log4j錛岀涓姝ュ氨鏄幏鍙栨棩蹇楄褰曞櫒錛岃繖涓褰曞櫒灝嗚礋璐f帶鍒舵棩蹇椾俊鎭傚叾璇硶涓猴細

public static Logger getLogger( String name)錛?
閫氳繃鎸囧畾鐨勫悕瀛楄幏寰楄褰曞櫒錛屽鏋滃繀瑕佺殑璇濓紝鍒欎負榪欎釜鍚嶅瓧鍒涘緩涓涓柊鐨勮褰曞櫒銆侼ame涓鑸彇鏈被鐨勫悕瀛楋紝姣斿錛?br/>
static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () ) ;

3.2.2.璇誨彇閰嶇疆鏂囦歡

褰撹幏寰椾簡鏃ュ織璁板綍鍣ㄤ箣鍚庯紝絎簩姝ュ皢閰嶇疆Log4j鐜錛屽叾璇硶涓猴細
BasicConfigurator.configure ()錛?鑷姩蹇熷湴浣跨敤緙虹渷Log4j鐜銆?br/>PropertyConfigurator.configure ( String configFilename) 錛氳鍙栦嬌鐢↗ava鐨勭壒鎬ф枃浠剁紪鍐欑殑閰嶇疆鏂囦歡銆?br/>DOMConfigurator.configure ( String filename ) 錛氳鍙朮ML褰㈠紡鐨勯厤緗枃浠躲?/p>

3.2.3.鎻掑叆璁板綍淇℃伅錛堟牸寮忓寲鏃ュ織淇℃伅錛?/strong>

褰撲笂涓や釜蹇呰姝ラ鎵ц瀹屾瘯錛屾偍灝卞彲浠ヨ交鏉懼湴浣跨敤涓嶅悓浼樺厛綰у埆鐨勬棩蹇楄褰曡鍙ユ彃鍏ュ埌鎮ㄦ兂璁板綍鏃ュ織鐨勪換浣曞湴鏂癸紝鍏惰娉曞涓嬶細

Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;

4. 鍙傝冭祫鏂?/span>

濡傛灉鎮ㄦ兂鏇存繁鍏ュ湴浜嗚ВLog4j錛岃緇忓父璁塊棶涓嬮潰鎻愬強鐨勭浉鍏抽摼鎺ャ?br/>Log4j欏圭洰涓婚〉------------------------------------------------------http://www.log4j.org/
Log4j FAQ -------------------------------------------------------http://www-900.ibm.com/developerWorks/cn/java/l-log4j/www.log4j.org/log4j/faq.html



ymx 2006-04-05 12:38 鍙戣〃璇勮
]]>
ANT瀛︿範鎸囧崡http://www.tkk7.com/yaominxi/archive/2006/04/05/39336.htmlymxymxWed, 05 Apr 2006 04:14:00 GMThttp://www.tkk7.com/yaominxi/archive/2006/04/05/39336.htmlhttp://www.tkk7.com/yaominxi/comments/39336.htmlhttp://www.tkk7.com/yaominxi/archive/2006/04/05/39336.html#Feedback0http://www.tkk7.com/yaominxi/comments/commentRss/39336.htmlhttp://www.tkk7.com/yaominxi/services/trackbacks/39336.html

鍐呭鎽樿錛?/span>

ANT鏄竴涓熀浜嶫ava鐨勮嚜鍔ㄥ寲鑴氭湰寮曟搸錛岃剼鏈牸寮忎負XML銆傞櫎浜嗗仛Java緙栬瘧鐩稿叧浠誨姟澶栵紝ANT榪樺彲浠ラ氳繃鎻掍歡瀹炵幇寰堝搴旂敤鐨勮皟鐢ㄣ?1)ANT鐨勫熀鏈蹇碉細
2)ANT鐨勫畨瑁咃細瑙e寘錛岃緗礬寰?br/>3)ANT鐨勪嬌鐢細鏈濂界殑瀛︿範鍙笉榪囨槸涓涓畝鍗曞疄鐢ㄧ殑渚嬪瓙璧鋒鈥︹?/span>

浣滆咃細 杞︿笢 http://www.chedong.com/tech/default.html



ANT鐨勫熀鏈蹇碉細Java鐨凪akefile

褰撲竴涓唬鐮侀」鐩ぇ浜嗕互鍚庯紝姣忔閲嶆柊緙栬瘧錛屾墦鍖咃紝嫻嬭瘯絳夐兘浼氬彉寰楅潪甯稿鏉傝屼笖閲嶅錛屽洜姝璇█涓湁make鑴氭湰鏉ュ府鍔╄繖浜涘伐浣滅殑鎵歸噺瀹屾垚銆傚湪Java涓簲鐢ㄦ槸騫沖彴鏃犲叧鎬х殑錛屽綋鐒朵笉浼氱敤騫沖彴鐩稿叧鐨刴ake鑴氭湰鏉ュ畬鎴愯繖浜涙壒澶勭悊浠誨姟浜嗭紝ANT鏈韓灝辨槸榪欐牱涓涓祦紼嬭剼鏈紩鎿庯紝鐢ㄤ簬鑷姩鍖栬皟鐢ㄧ▼搴忓畬鎴愰」鐩殑緙栬瘧錛屾墦鍖咃紝嫻嬭瘯絳夈傞櫎浜嗗熀浜嶫AVA鏄鉤鍙版棤鍏崇殑澶栵紝鑴氭湰鐨勬牸寮忔槸鍩轟簬XML鐨勶紝姣攎ake鑴氭湰鏉ヨ榪樿濂界淮鎶や竴浜涖?br/>

姣忎釜ant鑴氭湰錛堢己鐪佸彨build.xml錛変腑璁劇疆浜嗕竴緋誨垪浠誨姟(target)錛氭瘮濡傚浜庝竴涓竴鑸殑欏圭洰鍙兘闇瑕佹湁浠ヤ笅浠誨姟銆?/span>

  • 浠誨姟1錛歶sage 鎵撳嵃鏈剼鏈殑甯姪淇℃伅錛堢己鐪侊級
  • 浠誨姟2錛歝lean <-- init 娓呯┖鍒濆鍖栫幆澧?/span>
  • 浠誨姟3錛歫avadoc <-- build <-- init 鐢熸垚JAVADOC
  • 浠誨姟4錛歫ar <-- build <-- init 鐢熸垚JAR
  • 浠誨姟5錛歛ll <-- jar + javadoc <-- build <-- init 瀹屾垚浠ヤ笂鎵鏈変換鍔★細jar javadoc
鑰屽涓換鍔′箣闂村線寰鍙堝寘鍚簡涓瀹氫簡渚濊禆鍏崇郴錛氭瘮濡傛妸鏁翠釜搴旂敤鎵撳寘浠誨姟(jar)鐨勮繖涓緷璧栦簬緙栬瘧浠誨姟(build)錛岃岀紪璇戜換鍔″張渚濊禆浜庢暣涓幆澧冨垵濮嬪寲浠誨姟(init)絳夈?br/>
娉細鎴戠湅鍒板緢澶氶」鐩殑ant鑴氭湰涓殑鍛藉悕鍩烘湰涓婇兘鏄竴鑷寸殑錛屾瘮濡傦細緙栬瘧涓鑸彨build鎴栬卌ompile錛涙墦鍖呬竴鑸彨jar鎴杦ar錛涚敓鎴愭枃妗d竴鑸懡鍚嶄負javadoc鎴杍avadocs錛涙墽琛屽叏閮ㄤ換鍔ll銆傚湪姣忎釜浠誨姟鐨勪腑錛孉NT浼氭牴鎹厤緗皟鐢ㄤ竴浜涘閮ㄥ簲鐢ㄥ茍閰嶄互鐩稿簲鍙傛暟鎵ц銆傝櫧鐒禔NT鍙皟鐢ㄧ殑澶栭儴搴旂敤縐嶇被闈炲父涓板瘜錛屼絾鍏跺疄鏈甯哥敤鐨勫氨2錛?涓細姣斿javac javadoc jar絳夈?/span>

ANT鐨勫畨瑁?/span>

瑙e寘鍚庡湪緋葷粺鍙墽琛岃礬寰勪腑鍔犲叆鎸囧悜ant鐨刡in鐨勮礬寰勫氨鍙互浜嗭紝姣斿鍙互鍦℅NU/Linux涓婃妸浠ヤ笅閰嶇疆鍔犲叆/etc/profile涓細
export ANT_HOME=/home/ant
export JAVA_HOME=/usr/java/j2sdk1.4.1
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin

榪欐牱鎵цant 鍚庯紝濡傛灉涓嶆寚瀹氶厤緗枃浠禷nt浼氱己鐪佹壘build.xml榪欎釜閰嶇疆鏂囦歡錛屽茍鏍規嵁閰嶇疆鏂囦歡鎵ц浠誨姟錛岀己鐪佺殑浠誨姟璁劇疆鍙互鎸囧悜鏈甯哥敤鐨勪換鍔★紝姣斿錛歜uild錛屾垨鎸囧悜鎵撳嵃甯姪淇℃伅錛歶sage錛屽憡璇夌敤鎴鋒湁閭d簺鑴氭湰閫夐」鍙互浣跨敤銆?br/>

ANT鐨勪嬌鐢?/span>

鏈濂界殑瀛︿範榪囩▼灝辨槸鐪嬫噦閭d簺open source欏圭洰涓殑build.xml鑴氭湰錛岀劧鍚庢牴鎹嚜宸辯殑闇瑕佺畝鍖栨垚涓涓洿綆鍗曠殑錛孉NT鍜孉PACHE涓婂緢澶氶潪甯稿伐紼嬫淳鐨勯」鐩細綆鍗曟槗鐢紝鑰屼笖閫傚簲鎬ч潪甯稿己錛屽洜涓鴻繖浜涢」鐩殑寤虹珛寰寰鏉ユ簮浜庡紑鍙戜漢鍛樻棩甯告渶鐩存帴鐨勯渶姹傘?br/>浠ヤ笅鏄殑涓涓?a >WebLucene搴旂敤鐨勪緥瀛愶細淇敼鑷?a >JDOM鐨刡uild.xml錛?br/>
<project default="usage" basedir=".">

<!-- =================================================================== -->
<!-- Initialization target -->
<!-- =================================================================== -->
<target name="init">
<tstamp/>
<property file="${basedir}/build.properties" />
<property name="Name" value="ProjectFullName"/>
<property name="name" value="project_name"/>
<property name="version" value="0.2"/>
<property name="year" value="2003"/>

<echo message="----------- ${Name} ${version} [${year}] ------------"/>

<property name="debug" value="off"/>
<property name="optimize" value="on"/>
<property name="deprecation" value="on"/>

<property name="src.dir" value="./src/WEB-INF/src"/>
<property name="lib.dir" value="./src/WEB-INF/lib"/>
<property name="packages" value="com.chedong.*,org.apache.lucene.*"/>

<property name="build.src" value="./src/WEB-INF/build"/>
<property name="build.dest" value="./src/WEB-INF/classes"/>
<property name="build.javadocs" value="./src/doc"/>

<path id="classpath">
<pathelement path="${jsdk_jar}"/>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>

<filter token="year" value="${year}"/>
<filter token="version" value="${version}"/>
<filter token="date" value="${TODAY}"/>
<filter token="log" value="true"/>
<filter token="verbose" value="true"/>
</target>

<!-- =================================================================== -->
<!-- Help on usage -->
<!-- =================================================================== -->
<target name="usage" depends="init">
<echo message="${Name} Build file"/>
<echo message="-------------------------------------------------------------"/>
<echo message=""/>
<echo message=" available targets are:"/>
<echo message=""/>
<echo message=" jar --> generates the ${name}.jar file"/>
<echo message=" build --> compiles the source code"/>
<echo message=" javadoc --> generates the API documentation"/>
<echo message=" clean --> cleans up the directory"/>
<echo message=""/>
<echo message=" Please rename build.properties.default to build.properties"/>
<echo message=" and edit build.properties to specify JSDK 2.3 classpath."/>
<echo message=""/>
<echo message=" See the comments inside the build.xml file for more details."/>
<echo message="-------------------------------------------------------------"/>
<echo message=""/>
<echo message=""/>
</target>

<!-- =================================================================== -->
<!-- Prepares the source code -->
<!-- =================================================================== -->
<target name="prepare-src" depends="init">
<!-- create directories -->
<mkdir dir="${build.src}"/>
<mkdir dir="${build.dest}"/>

<!-- copy src files -->
<copy todir="${build.src}">
<fileset dir="${src.dir}"/>
</copy>
</target>

<!-- =================================================================== -->
<!-- Compiles the source directory -->
<!-- =================================================================== -->
<target name="build" depends="prepare-src">
<javac srcdir="${build.src}"
destdir="${build.dest}"
debug="${debug}"
optimize="${optimize}">
<classpath refid="classpath"/>
</javac>
</target>

<!-- =================================================================== -->
<!-- Creates the class package -->
<!-- =================================================================== -->
<target name="jar" depends="build">
<jar jarfile="${lib.dir}/${name}.jar"
basedir="${build.dest}"
includes="**"/>
</target>

<!-- =================================================================== -->
<!-- Creates the API documentation -->
<!-- =================================================================== -->
<target name="javadoc" depends="build">
<mkdir dir="${build.javadocs}"/>
<javadoc packagenames="${packages}"
sourcepath="${build.src}"
destdir="${build.javadocs}"
author="true"
version="true"
use="true"
splitindex="true"
windowtitle="${Name} API"
doctitle="${Name}">
<classpath refid="classpath"/>
</javadoc>
</target>

<!-- =================================================================== -->
<!-- Clean targets -->
<!-- =================================================================== -->
<target name="clean" depends="init">
<delete dir="${build.src}"/>
<delete dir="${build.dest}/org"/>
<delete dir="${build.dest}/com"/>
<delete>
<fileset dir="${build.dest}" includes="**/*.class"/>
</delete>
</target>
</project>
<!-- End of file -->



緙虹渷浠誨姟錛歶sage 鎵撳嵃甯姪鏂囨。錛屽憡璇夋湁閭d簺浠誨姟閫夐」錛氬彲鐢ㄧ殑鏈塨uild, jar, javadoc鍜宑lean.

鍒濆鍖栫幆澧冨彉閲忥細init
鎵鏈変換鍔¢兘鍩轟簬涓浜涘熀鏈幆澧冨彉閲忕殑璁劇疆鍒濆鍖栧畬鎴愶紝鏄悗緇叾浠栦換鍔$殑鍩虹錛屽湪鐜鍒濆鍖栬繃紼嬩腑錛屾湁2鐐規瘮杈冨彲浠ユ柟渚胯緗細

1 闄や簡浣跨敤鍗寸己鐪佺殑property璁劇疆浜咼AVA婧愯礬寰勫拰杈撳嚭璺緞澶栵紝寮曠敤浜嗕竴涓閮ㄧ殑build.properties鏂囦歡涓殑璁劇疆錛?br/><property file="${basedir}/build.properties" />
榪欐牱澶ч儴鍒嗙畝鍗曢厤緗敤鎴峰彧瑕佷細鐪嬫噦build.properties灝卞彲浠ヤ簡錛屾瘯绔焁ML姣旇搗key value鐨勫睘鎬ф枃浠惰繕鏄鍙鎬у樊涓浜涖傜敤build.properties涔熷彲浠ユ柟渚垮叾浠栫敤鎴蜂粠緙栬瘧鐨勭粏鑺備腑瑙f斁鍑烘潵銆?br/>
2 CLASSPATH璁劇疆錛氫嬌鐢ㄤ簡鍏朵腑鐨勶細

<path id="classpath">
<pathelement path="${jsdk_jar}"/>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>

鍒欑浉褰撲簬璁劇疆浜嗭細CLASSPATH=/path/to/resin/lib/jsdk23.jar;/path/to/project/lib/*.jar;

鏂囦歡澶嶅埗錛歱repare-src
鍒涘緩涓存椂SRC瀛樻斁鐩綍鍜岃緭鍑虹洰褰曘?/span>

<!-- =================================================================== -->
<!-- Prepares the source code -->
<!-- =================================================================== -->
<target name="prepare-src" depends="init">
<!-- create directories -->
<mkdir dir="${build.src}"/>
<mkdir dir="${build.dest}"/>

<!-- copy src files -->
<copy todir="${build.src}">
<fileset dir="${src.dir}"/>
</copy>
</target>

緙栬瘧浠誨姟錛歜uild
緙栬瘧鏃剁殑CLASSPATH鐜閫氳繃涓涓嬫柟寮忔壘鍒板紩鐢ㄤ竴涓猵ath瀵硅薄

<classpath refid="classpath"/>

鎵撳寘浠誨姟錛歫ar
瀵瑰簲鐢ㄦ墦鍖呯敓鎴愰」鐩墍鍐欏悕鐨?jar鏂囦歡


<!-- =================================================================== -->
<!-- Creates the class package -->
<!-- =================================================================== -->
<target name="jar" depends="build">
<jar jarfile="${lib.dir}/${name}.jar"
basedir="${build.dest}"
includes="**"/>
</target>

鐢熸垚JAVADOC鏂囨。浠誨姟: javadoc
<!-- =================================================================== -->
<!-- Creates the API documentation -->
<!-- =================================================================== -->
<target name="javadoc" depends="build">
<mkdir dir="${build.javadocs}"/>
<javadoc packagenames="${packages}"
sourcepath="${build.src}"
destdir="${build.javadocs}"
author="true"
version="true"
use="true"
splitindex="true"
windowtitle="${Name} API"
doctitle="${Name}">
<classpath refid="classpath"/>
</javadoc>
</target>

娓呯┖涓存椂緙栬瘧鏂囦歡錛歝lean
<!-- =================================================================== -->
<!-- Clean targets -->
<!-- =================================================================== -->
<target name="clean" depends="init">
<delete dir="${build.src}"/>
<delete dir="${build.dest}/org"/>
<delete dir="${build.dest}/com"/>
<delete>
<fileset dir="${build.dest}" includes="**/*.class"/>
</delete>
</target>

TODO錛?br/>鏇村浠誨姟/鎵╁睍錛氾紙鏍蜂緥錛?br/>

  • 嫻嬭瘯浠誨姟錛欽Unit嫻嬭瘯
  • 浠g爜椋庢牸媯鏌ヤ換鍔★細CheckStyle錛孞alopy絳?/span>
  • 閭歡璀︽姤浠誨姟錛氬彲浠ユ妸浠ヤ笂榪欎簺浠誨姟鐨勮緭鍑鴻鍛婂彂閫佸埌鍒跺畾鐨勭敤鎴峰垪琛ㄤ腑錛岃繖涓換鍔″彲浠ヨ緗瘡澶╄嚜鍔ㄨ繍琛屻?/span>


ymx 2006-04-05 12:14 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 国产男女猛烈无遮档免费视频网站| 日日摸夜夜添夜夜免费视频| 亚洲免费人成视频观看| 久久久久亚洲av无码专区| 亚洲无删减国产精品一区| 久久久久亚洲精品无码系列| 久久久无码精品亚洲日韩蜜桃| 亚洲AV中文无码乱人伦下载| 亚洲国产成人久久精品影视| 337p日本欧洲亚洲大胆色噜噜| 亚洲黄色中文字幕| 亚洲av无码一区二区三区天堂古代 | 99精品视频免费在线观看| 久久午夜夜伦鲁鲁片无码免费| 99久久精品国产免费| 亚洲一级毛片免费看| 日韩精品成人无码专区免费| 最新69国产成人精品免费视频动漫| 日韩一区二区免费视频| 国产又黄又爽又猛的免费视频播放| 亚洲精品麻豆av| 亚洲VA中文字幕无码毛片| 777亚洲精品乱码久久久久久| 亚洲欧洲日本天天堂在线观看| 亚洲日韩中文字幕一区| 亚洲av成人一区二区三区观看在线| 日本一区二区三区免费高清在线| 国产美女视频免费观看的网站| 暖暖免费日本在线中文| 99久久久国产精品免费无卡顿| 成年女人18级毛片毛片免费 | 四虎影视在线影院在线观看免费视频| 亚洲免费视频在线观看| 99久久免费国产精品特黄| 国产免费观看青青草原网站| 亚洲国产成人久久综合区| 亚洲精品福利视频| 亚洲熟女乱色一区二区三区| 成人a毛片视频免费看| 久久午夜羞羞影院免费观看 | 三上悠亚电影全集免费|