Feeling

              三人行,必有我師焉

             ::  :: 新隨筆 :: 聯系 ::  :: 管理 ::
            185 隨筆 :: 0 文章 :: 392 評論 :: 0 Trackbacks

          #

          Java應用定制工廠(以下簡稱為JCB,Java Customization Builder)是一個針對Java輕量級桌面應用進行精簡優化的小工具,使用它可以精簡你的jar包,并自動生成一個精簡的JRE,也可以使用它生成一個Exe啟動引導程序,并且能夠對你的Java應用自動做Pack200和Unpack200處理。使用本工具定制的Java桌面應用通常不會超過5M(包含JRE),SWT客戶端程序相對于Swing客戶端程序更小,一般不會超過3M。

          JCB1.0.3主要功能是可以支持
          添加Exe的版本信息,并且能夠更細節的定義Exe的啟動行為,比如是否顯示一個splash窗口,是否優先使用精簡版的jre,以及增加了對unpack操作的優化,讓應用程序第一次運行啟動的更快。同時也增加了對系統權限的支持,不再要求需要管理員權限才能運行軟件,Guest用戶一樣的使用。

          下一個版本考慮增加一個Au3的編輯器,具有語法高亮和智能輔助功能,可以讓高級用戶定制自己的Exe行為。

          軟件主頁:http://jcb.sourceforge.net
          JCB1.0.3下載地址:http://sourceforge.net/projects/jcb/files/JCB_1.0.3.zip/download


          posted @ 2011-12-26 22:13 三人行,必有我師焉 閱讀(1610) | 評論 (3)編輯 收藏

          在一個線程中啟動了一個線程鉤子,然后死活拿不到主線程中的消息,全局鉤子就沒問題。折騰了一下午才發現這個線程鉤子是在子線程中啟動的,GetCurrentThreadId 方法拿到的不是主線程的threadId,自然也就獲取不到主線程的系統消息。Google了好多文章,都沒有提到這一點,真TMD郁悶,完全浪費我時間,還以為是我的類庫寫錯了,鬧了半天是調用的參數傳的不對。
          posted @ 2011-12-24 18:58 三人行,必有我師焉 閱讀(1794) | 評論 (1)編輯 收藏

          同樣的API, IShellFolder遍歷控制面板里面節點的children,所有的.net代碼都能獲取,所有的非.net代碼都無法獲?????

          本來還以為是代碼的問題,debug一天死活沒找到問題,最后在codeproject上找了十幾個例子,發現都一樣的結果,why? 

          難道僅僅對.net的才開放遍歷的權限?
          posted @ 2011-12-14 12:35 三人行,必有我師焉 閱讀(1738) | 評論 (1)編輯 收藏

          1、安裝VS2008
          2、安裝 Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1
          3、修改SDK的SetEnv.cmd的第146行 
          Set "VCTools=%VCRoot%\VC" 為 Set "VCTools=%VCRoot%\VC\Bin"
          4、修改build.bat的環境配置
          call "C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\SetEnv" /xp /x86 /Release (不是%PROGRAMFILES%目錄,編譯字幕為綠色,PROGRAMFILES%目錄編譯出來的dll有400多k。)
          call "%PROGRAMFILES%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
          posted @ 2011-12-13 13:16 三人行,必有我師焉 閱讀(383) | 評論 (0)編輯 收藏

               摘要: Java應用定制工廠(以下簡稱為JCB,Java Customization Builder)是一個針對Java輕量級桌面應用進行精簡優化的小工具,使用它可以精簡你的jar包,并自動生成一個精簡的JRE,也可以使用它生成一個Exe啟動引導程序,并且能夠對你的Java應用自動做Pack200和Unpack200處理。使用本工具定制的Java桌面應用通常不會超過10M(包含JRE),SWT客戶端程序相對于Swing客戶端程序更小,一般不會超過5M。  閱讀全文
          posted @ 2011-12-12 16:27 三人行,必有我師焉 閱讀(6244) | 評論 (12)編輯 收藏

          GreenJVMMake 是一個精簡JRE的小工具,詳細信息請參見項目:

          http://code.google.com/p/greenvm/

          javaonepackage 是一個集成了GreenJVMMake的IDE,可以方便的生成自定義的JRE,詳細信息請參見項目:

          http://code.google.com/p/javaonepackage/

          比較遺憾的是javaonepackage的作者遺失了代碼,導致項目無法進一步的更新,影響了使用。

          用以上工具生成的精簡JRE通常不超過2M,可是用exe4j將Java應用轉換成exe的時候,卻會拋出Couldn't load main class,原因是因為exe4j使用自己的jar來加載用戶的Jar包,這其中用到了一些反射機制,精簡JRE里面當然是不含有多余的class文件的,所以加載必然失敗。我們需要做的就是把這些相關的class添加到精簡JRE中,這些class包含在 java\lang, java\util, sun\reflect 這三個包中。將這些class添加到精簡jre中,大小也僅僅增加數百K而已,在我們可以的接受范圍之內。

          PS:由于GreenJVMMake的機制是檢查運行時加載的class文件,所以它很可能遺失Jar運行所需要的exception class,這會導致運行時JVM的崩潰,用戶需手動加載所有可能會產生的exception class,包含runtime的和非runtime的。
          posted @ 2010-09-02 10:53 三人行,必有我師焉 閱讀(4035) | 評論 (1)編輯 收藏

          現在網絡上越來越流行.net和java寫的客戶端的小應用程序,而且后綴是exe。本文討論的是如何從exe4j封裝的exe文件中將自己想要的jar抽取出來。

          exe4j一直是一種比較通用的java exe封裝工具,但是其并沒有將jar轉換為本地文件,而是將jar文件通過特殊處理后,封裝成的一個exe文件。因此只要我們了解了exe4j的原理,就可以將jar文件從exe文件中提取出來,并通過反編譯工具來查看程序代碼。

          1. 分析Exe4J,得知其在添加文件到.exe時,使用0x88將文件內容Xor,所以第一步,我們需要將原始的數據提取出來:
          import java.io.*;
          import java.util.*;

          public class gen {
              
          public static void main(String args[]) throws IOException {
                  FileInputStream fin 
          = new FileInputStream(args[0]); // 可以將整個exe文件解碼
                  FileOutputStream fout = new FileOutputStream(args[1]);
                  BufferedInputStream bin 
          = new BufferedInputStream(fin);
                  BufferedOutputStream bout 
          = new BufferedOutputStream(fout);
                  
          int in = 0;
                  
          do {
                      in 
          = bin.read();
                      
          if (in == -1)
                          
          break;
                      in 
          ^= 0x88;
                      bout.write(in);
                  } 
          while (true);
                  bin.close();
                  fin.close();
                  bout.close();
                  fout.close();
              }
          }

          2.分析提取出來的數據文件,使用WinHex查看其16進制代碼。由于Jar文件的開頭總是PK開頭,并且總包含有manifest.mf文件,并且結尾總是有3個00,同時結尾段有整個Jar包文件的索引,我們可以根據這一特性來分析我們需要的片段。

          1、搜索Jar的manifest,然后往前找,找到的第一個PK段,即為一個Jar的開頭。
          2、查看片段里Jar里的每個class信息,直到最后的文件索引片段。
          3、一個Jar的結束片段位于索引片段之后,仍然包含著PK段,并且最后包含著3個00,且這3個00距離PK大概20個字節左右

          根據以上3條準則,足以提取整個Jar數據段,然后導入新文件中,并且以zip字段命名,嘗試用ZIP解壓縮軟件打開,看看是否抽取正確。

          需要注意的是WinHex非注冊版,只能保存280K大小的文件,更大的Jar文件,需要注冊版的WinHex才行。
          posted @ 2010-08-22 01:03 三人行,必有我師焉 閱讀(6827) | 評論 (4)編輯 收藏

          1、調用截圖工具:

          http://iecapt.sourceforge.net/

          2、使用Java類庫,通過Render生成Java2D圖像:

          http://www.ldotc.com/Web+Page+Thumbnails+in+Java.html

          方法1的優點在于,圖像不會失真,速度快,但是缺點是依賴于服務器端的UI,無UI的話,則無法使用。
          方法2的優點是不依賴于服務器端的UI,但是圖像容易失真,且速度相對較慢……
          posted @ 2010-08-17 12:50 三人行,必有我師焉 閱讀(1449) | 評論 (0)編輯 收藏

               摘要: TGA or TARGA format is a format for describing bitmap images, it is capable of representing bitmaps ranging from black and white, indexed colour, and RGB colour, the format also supports various compr...  閱讀全文
          posted @ 2010-03-29 13:02 三人行,必有我師焉 閱讀(1995) | 評論 (0)編輯 收藏

          Eclipse 是一個集成開發環境,同時又是一個產品平臺。這樣有時候我們就會碰到一個問題,在開發Debug項目的時候沒有問題,打包發布的時候就有問題了,這可如何是好?由于Debug時候和發布后plugin的ClassLoader機制不盡相同,出現這個問題的幾率還有會有的。

          Java 在這一點上為我們提供了方法,那就是遠程Debug。遠程Debug一般用于Web開發,或者客戶端無法負載大規模的應用時才會運用到,所以Desktop developer 很少會涉及到這個概念。不過Eclipse 的產品平臺卻讓我再次體會到了Java的強大。

          關于Eclipse Remote Debug的文章,大家可以從此處學習:

          http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/index.html

          Remote Debug 需要2方面的設置,一個是產品平臺JVM啟動參數的設置,需要讓平臺以遠程Debug的模式啟動。然后是在開發端監聽產品平臺的運行狀態。當產品平臺運行到斷點代碼時,Eclipse開發端就會進入Debug界面,像普通debug一樣正常debug了。

          posted @ 2009-09-10 16:59 三人行,必有我師焉 閱讀(2413) | 評論 (1)編輯 收藏

          僅列出標題
          共9頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 
          GitHub |  開源中國社區 |  maven倉庫 |  文件格式轉換 
          主站蜘蛛池模板: 休宁县| 昂仁县| 淮阳县| 浦县| 东明县| 临泉县| 紫金县| 阿瓦提县| 景德镇市| 泸溪县| 凤山市| 印江| 富蕴县| 墨江| 天祝| 库车县| 中超| 施秉县| 梧州市| 杭州市| 滦平县| 若尔盖县| 宁南县| 龙南县| 满城县| 潼南县| 临猗县| 上思县| 奇台县| 平顶山市| 虎林市| 冕宁县| 琼中| 固镇县| 合江县| 九龙县| 墨竹工卡县| 社旗县| 南雄市| 文登市| 信宜市|