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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java class修改_【原创】Java基础之简单修改jar包中的class

發(fā)布時間:2025/3/20 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java class修改_【原创】Java基础之简单修改jar包中的class 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

有時需要修改很多jar(假設(shè)這些jar都位于lib目錄)中其中一個jar中的某一個類,而且又沒有原始代碼或ide,這時最簡單的方式是:

1 進入lib目錄

#cd lib#ls

test.jar dependency1.jar dependency2.jar

2 查看待修改jar包內(nèi)類結(jié)構(gòu)

$ unzip -l test.jaror$ vim test.jar

3 解壓待修改jar包

$ mkdir test_dir

$ unzip test.jar-d test_dir

4 查看class的jdk版本

$ vi -b test_dir/package/Class.class:%!xxd0000000: cafe babe 0000 0032 0123 0700 0201 0023 .......2.#.....#

取第15-16位,上例即32,

5 將要修改的文件放到class同目錄下(如果沒有源代碼可以嘗試反編譯),并修改

$ vi test_dir/package/Class.java

6 收集classpath

由于jar包可能非常多,所以使用命令來生成

$ ls *.jar|sed ':a;N;$!ba;s/\n/:/g'test.jar:dependency1.jar:dependency2.jar

注linux下是:分隔,windows下是;分隔

7 編譯

$ javac -help

Usage: javacwhere possible options include:-g Generate all debugging info-g:none Generate no debugging info-g:{lines,vars,source} Generate only some debugging info-nowarn Generate no warnings-verbose Output messages about what the compiler isdoing-deprecation Output source locations where deprecated APIs are used-classpath Specify where to find user class files andannotation processors-cp Specify where to find user class files andannotation processors-sourcepath Specify where to find input source files-bootclasspath Override location of bootstrap classfiles-extdirs Override location of installed extensions-endorseddirs Override location of endorsed standards path-proc:{none,only} Control whether annotation processing and/or compilation isdone.-processor [,,...] Names of the annotation processors to run; bypasses default discovery process-processorpath Specify where to find annotation processors-parameters Generate metadata forreflection on method parameters-d Specify where to place generated classfiles-s Specify where to place generated source files-h Specify where to place generated native header files-implicit:{none,class} Specify whether or not to generate class files forimplicitly referenced files-encoding Specify character encoding used by source files-source Provide source compatibility with specified release-target Generate class files forspecific VM version-profile Check that API used is available inthe specified profile-version Version information-help Print a synopsis of standard options-Akey[=value] Options to passto annotation processors-X Print a synopsis of nonstandard options-J Pass directly to the runtime system-Werror Terminate compilation ifwarnings occur

@ Read options and filenames from file

實際命令

$ javac -cp test.jar:dependency1.jar:dependency2.jar -source 1.6 -target 1.6 -sourcepath test_dir -d test_dir test_dir/package/Class.java

8 重新打jar包

$ cd test_dir

$ zip-r test.jar ./*

9 刪除臨時目錄和原始jar

$ cd ..

$ cp test_dir/test.jar test.jar

$/bin/rm -rf test_dir

10 測試修改生效

總結(jié)

以上是生活随笔為你收集整理的java class修改_【原创】Java基础之简单修改jar包中的class的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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