日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

精简JRE第二步 ─ 精简lib目录

發(fā)布時(shí)間:2024/1/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 精简JRE第二步 ─ 精简lib目录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://jarg.iteye.com/blog/867960

JRE(Java Runtime Environment): Java運(yùn)行環(huán)境.
打開JRE安裝目錄.目錄包括bin,lib二個(gè)文件夾.
1. bin: 可以認(rèn)為這是Java虛擬機(jī).
精簡(jiǎn)過(guò)程在
本博客文章精簡(jiǎn)JRE第一步 ─ 精簡(jiǎn)bin目錄 中有初步介紹.

2. lib: 執(zhí)行class文件時(shí),Java虛擬機(jī)需要用到的類庫(kù)及資源文件.

① lib目錄最主要的類庫(kù)是rt.jar,是任意Java程序所必需的類庫(kù).
lib目錄大約62MB,但是rt.jar類庫(kù)就占了47MB,可見精簡(jiǎn)bin目錄,最主要是裁剪rt.jar.

② lib目錄下一個(gè)運(yùn)行Java程序不可或缺的文件是位于i386下的虛擬機(jī)配置文件jvm.cfg.該配置文件用來(lái)管理不同版本的jvm.dll.其內(nèi)容作為java.exe,javac.exe的全局變量,用來(lái)加載相應(yīng)的動(dòng)態(tài)鏈接庫(kù)文件.

③ lib目錄里面除了包含程序運(yùn)行所需要的類庫(kù)及配置文件外,還包含有一些諸如: 鼠標(biāo)光標(biāo),字體等系統(tǒng)資源.簡(jiǎn)單程序如果未用到這部分資源的話,可以剔除.
如果程序除去JRE部分,占用空間較大的話,為了避除資源加載錯(cuò)誤帶來(lái)的麻煩,建議保留這不到20MB的內(nèi)容.

本文主要介紹類庫(kù)的精簡(jiǎn)過(guò)程,主要是rt.jar類庫(kù)的精簡(jiǎn)過(guò)程.

一、準(zhǔn)備工作
查看執(zhí)行當(dāng)前Java程序所需加載的所有類(由于Java中具有類延時(shí)加載的現(xiàn)象,所以要把程序所有的功能都運(yùn)行一次才能得到運(yùn)行當(dāng)前Java程序需要用到的全部類),并保存所有用到的類名到log.txt中.
查看程序加載類的方法在
本博客文章精簡(jiǎn)JRE - verbose命令 中有初步介紹.

二、修改log.txt
由于log.txt每行都是形同: [Loaded java.lang.System from shared objects file]的一串字符,修改文本以方便獲取類完整名java.lang.System,從而獲得類似類路徑j(luò)ava/lang/System的一串字符,方便后繼編寫類拷貝程序.
修改方法:
1. 查找并替換[Loaded 為空,達(dá)到刪除[Loaded 的目的.
2. 使用任意一個(gè)具有正則表達(dá)式查找替換功能的文本編輯器,查找并替換 from.*為空,達(dá)到刪除 from及其后面的字符串的目的.
3. 查找并替換.為/

4. 刪除以[Opened 開頭的行.

5. 刪除程序中System.out.println的輸出行.

java/lang/Object java/io/Serializable java/lang/Comparable ... java/util/TreeMap$Entry sun/misc/VM sun/nio/cs/ext/GBK java/lang/StringCoding java/lang/ThreadLocal$ThreadLocalMap ... java/security/ProtectionDomain$Key java/security/Principal java/lang/Shutdown java/lang/Shutdown$Lock


三、類拷貝程序
上述形同java/lang/System的字符串,System是類名,相應(yīng)System.class文件.java/lang為System.class在類庫(kù)rt.jar中的相對(duì)路徑.下面的類拷貝程序的目的就是從解壓后的rt.jar的文件夾rt中將需要用到的類(也就是log.txt中記載的類)拷貝到別一個(gè)文件夾(這里為rt1)中,達(dá)到抽取運(yùn)行當(dāng)前Java程序需要全部類的目的.

import java.io.*;public class CopyClass {public String src = "rt"; // 類源目錄public String dest = "rt1"; // 類拷貝目的目錄public CopyClass(){readAndCopy("log.txt");}public static void main(String[] args){CopyClass obj = new CopyClass();}/* 讀取log.txt中內(nèi)容,并拷貝相應(yīng)類 */public void readAndCopy(String logName){int count = 0; // 用于記錄成功拷貝的類數(shù)try{FileInputStream fi = new FileInputStream(logName);InputStreamReader ir = new InputStreamReader(fi);BufferedReader br = new BufferedReader(ir);String string = br.readLine();while(string != null){if(copyClass(string) == true)count++;elseSystem.out.println("ERROR " + count + ": " + string);string = br.readLine();}}catch (IOException e){System.out.println("ERROR: " + e);}System.out.println("count: " + count);}/* 從rt中拷貝出class文件 */public boolean copyClass(String string) throws IOException{String classDir = string.substring(0,string.lastIndexOf("/"));String className = string.substring(string.lastIndexOf("/")+1,string.length()) + ".class";/* class文件不存在,返回false */File srcFile = new File(src + "/" + classDir + "/" + className);if(!srcFile.exists()){return false;}byte buf[] = new byte[256];FileInputStream fin = new FileInputStream(srcFile);/* class目錄不存在,創(chuàng)建 */File destDir = new File(dest + "/" + classDir);if(!destDir.exists())destDir.mkdirs();File destFile = new File(destDir + "/" + className);FileOutputStream fout = new FileOutputStream(destFile);int len = 0;while((len = fin.read(buf)) != -1){fout.write(buf,0,len);}fout.flush();return true;} }

程序運(yùn)行要求: 事先解壓rt.jar類庫(kù)到該類拷貝程序所在目錄

四、精簡(jiǎn)rt.jar
將拷貝出來(lái)的類打包成rt.jar.
1. 用jar打包命令打包.
2. 用壓縮程序(如: winrar)壓縮成rt.zip(不能是.rar格式),然后重命令為rt.jar.

五、精簡(jiǎn)charsets.jar
charsets.jar包含執(zhí)行程序所需的編碼方式,但是通常我們只會(huì)用到其中的一種.根據(jù)類拷貝程序提示的錯(cuò)誤信息,將相應(yīng)的類拷貝出來(lái)打包成charsets.jar,完成精簡(jiǎn)charsets.jar的工作.

?

至此完成本文要介紹的內(nèi)容: 精簡(jiǎn)lib目錄.

  • 大小: 35.8 KB
  • 大小: 6.8 KB
  • log.rar (2.2 KB)
  • 下載次數(shù): 22

?

總結(jié)

以上是生活随笔為你收集整理的精简JRE第二步 ─ 精简lib目录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青青视频免费在线观看 | 国产精品探花一区二区在线观看 | 亚洲在线视频观看 | 国产欧美一区二区三区免费看 | 日本a级片免费 | 人人爽人人射 | 国产www免费| 91激情视频在线观看 | 成年人黄色一级片 | 九九视频这里只有精品 | 亚洲大成色| 裸体喂奶一级裸片 | www,xxx日本| 亚洲v欧美v另类v综合v日韩v | 成人听书哪个软件好 | 脱美女衣服亲摸揉视频 | 2019毛片 | 久久合| 茄子视频色 | 日韩一二三四五区 | 女生鸡鸡软件 | 国产精品久久久久久久久晋中 | 亚洲美女爱爱 | 撸啊撸av | 337p粉嫩大胆噜噜噜噜69影视 | 青青草视频 | 欧美国产激情 | 91精品国产91久久久久青草 | 污污软件在线观看 | 久久艹免费视频 | 国产探花精品一区二区 | 怡春院视频 | 一级aa毛片| 久热精品视频在线 | 日日夜夜免费 | 久草成人| 老女人人体欣赏a√s | www爱爱 | 久久人妻少妇嫩草av无码专区 | www久久久com | 亚洲国产精品免费视频 | 国产精品一区视频 | 久久99精品国产.久久久久 | 啪啪一区二区 | 懂色av成人一区二区三区 | 国产亚洲女人久久久久毛片 | 强睡邻居人妻中文字幕 | 亚洲av无码一区二区三区人妖 | 超碰在线观看99 | 国产精品一区在线 | 黄色一级视频网站 | 国产真实乱 | 日本一区二区三区免费视频 | 日韩久久久久久 | 国产女主播喷水高潮网红在线 | 精品国产一区二区不卡 | 日韩中文字幕在线观看 | 欧美激情视频二区 | 国产福利片在线 | 97高清国语自产拍 | 成人图片小说 | 亚洲AV永久无码国产精品国产 | 片集网 | 有码av在线 | 久久免费网 | av香蕉网 | 俄罗斯av片 | www中文字幕| 青青草成人网 | 国产毛片aaa| 蜜臀av一区二区 | 浮生影视在线观看免费 | 欧美美女性视频 | 午夜免费一级片 | 黄色一级大片在线免费看国产一 | 免费看三级黄色片 | 久久久精品在线 | 成人性生交大片免费看vrv66 | 日本a在线免费观看 | 国产xxx在线观看 | 精品视频在线看 | 蜜臀av一区二区三区有限公司 | 96av视频| 中文字幕第二区 | 亚洲色图2 | 男女一进一出视频 | 亚洲欧洲一区二区 | 激情视频免费观看 | 成年人免费在线 | 日韩一区二区三区免费视频 | aa视频免费观看 | 久久99久久久久久 | 国产精品久久久久久久久久久久久久久久久 | 少妇被躁爽到高潮无码人狍大战 | 日本网站在线播放 | 深夜在线网站 | 亚洲涩涩涩 | 亚洲欧美中文字幕 | 欧美日韩少妇精品 |