Java2HTML改造手記(1) (轉)

worldblog發表於2008-01-31
Java2HTML改造手記(1) (轉)[@more@]

2Html()是一個非常好用的工具,它可以直接將您的java生成HTML頁面,而且結構組織的就象javadoc組織的一樣好,並且支援Ant Task擴充套件,給廣大的愛好者一個非常方便實用的功能.筆者就非常喜歡使用ant結合javadoc/java2html等直接生成javadoc和java html併發布到上.各位可以去我的站點看一下(,我的網站就是使用()結合ant()等自動釋出的,如果你願意的話甚至可以進行每日構建.我簡直是太喜歡Ant這個工具了(話題有點跑了,沒有辦法,小時候寫作文就容易跑題,習慣了).

:namespace prefix = o ns = "urn:schemas--com::office" />

  言歸正傳,還是回到改造手記上來.

  不知道使用過java2html的各位看客有沒有注意到.java2html預設是不支援字元編碼的.也是,誰讓作者是一個洋人(從它的版權資訊裡看,應該是一個英國人)呢?他們怎麼能注意到遙遠的東方有一群”巨龍”將要使用他的”小”呢?如果你的程式碼中輸入了中文那麼,^_^,那麼恭喜你,你可以見識一下帶有中文亂碼的Html頁面了.說實話,這也是不容易見到的.當然,英文極好的看官可以離開了,因為英文極好的您的程式碼裡當然不會出現中文字元了,這也有損於你的能力的體現了,而象我等這樣只是認識簡單的二十幾個英文字母的英文愛好者當然會覺得心理非常不爽了(如果有可能我甚至想把程式程式碼全部使用中文書寫,當然java支援這麼作,只是我的boss不同意吧了,但願這片文章不會唄我的boss看到.).

  我知道很多人都象我一樣對於程式對於程式設計有著近乎狂熱的愛好(如果沒有這麼狂熱的愛好你也不會利用者有限的寶貴的等價於金錢的時間來看我的這個臭屁文章),當然不滿足於使用的軟體會有這樣的瑕疵,那麼好吧,套用現在高手常用的一個口頭禪,讓我們開始”DIY”歷程吧(臭屁這麼多,終於要進入主題了,我也開始有些心急了,呵呵).

  實際上,到這裡,我這個”榆木腦袋”(小學老師就是經常使用這個”愛稱”)只想到了兩個解決辦法:

一.  在使用java2html之前先將我的程式碼進行轉碼,然後讓java2html使用轉碼後的程式碼.

二.  直接修改這個java2html的程式碼,給java2html新增一個encoding編碼引數.

各位不難想象.如果利用方法一,不管你如何轉換在英文環境中還是會出現亂碼,既是能正確顯示中文也需要你在Browser上手動選擇一下編碼方式.而方法二才能體現出我們的”高超水平”,而且可以很平滑的和原有的軟體結合,不影響其他的應用.

從作者的軟體許可()可以看到這是一個共享軟體,使用者可以自由的釋出,但是不可以反編譯,逆向工程等.所以我接下來將要作的是嚴格來說應該很不妥當的,但是同樣我也不能容忍這個軟體的這個微小的瑕疵,於是,我在完全保留其版權資訊並且尊重其版權的情況下對java2html進行了有限的擴充(在軟體中我還加入了我自己的一點小記號,呵呵,人無完人呀).

接下來我們要作的既是反編譯這個軟體包了.關於Decompile,業界有很多爭議,很多人認為java編譯過的程式碼是不的,既是使用了混淆器也是這樣,這裡我不想討論這個問題,因為我對這個方面也不是專家,也不是能人裡手,還是留給那些喜歡討論的人來進行吧(關於java的討論實在是太多了).我在這裡想說的是,我並不是鼓勵大家對java軟體進行反編譯,個人認為只是在覺得需要完善這個軟體的時候但不能獲得java原始碼的時候才能採用這種最下策的下策,而且進行相關工作的時候也一定要保留原作者的相關版權資訊,僅此宣告一下.

首先將原來的j2h.jar(可以從)解包,用之類的就可以解開,然後象一個專業的駭客一樣,尋找入口吧(有點帝國的意思了).最明顯的入口就是META-INF/MANIFEST.MF,為什麼這麼說呢?因為java透過這個檔案指定這個Jar包的程式的類名,也就是帶有Main方法的類,當然它就是入口了(我並不是駭客帝國中的先知,第一那個先知是女的,至少是一個女人形態,而我是男的;第二,我並沒有未卜先知的能力,如果有這個能力我就去考買獎券發家了,誰還來寫這勞什子程式呀).所有我們的目標就是先搞定這個檔案,透過它尋找突破口.

J2h.class:

import com.java2html.Java2HTML;

public class j2h

{

  public static void main(String args[])

  throws Exception

  {

  Java2HTML.main(args);

  }

  public j2h()

  {

  }

}

看到了,它直接把args引數送到java2html.main中了,就象破案一樣,有了現在就開始追蹤吧.

欲知後事如何,且聽下回分解.

版權歸iBeyond()所有,轉載請著名出處並保留版權資訊.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998890/,如需轉載,請註明出處,否則將追究法律責任。

相關文章