国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Jar包反編譯,修改代碼后,重新打jar包

這篇具有很好參考價值的文章主要介紹了Jar包反編譯,修改代碼后,重新打jar包。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、背景

最近遇到一個問題,需要把現(xiàn)有的jar包反編譯成java代碼,然后運行,測試,修改后再次打jar包。并不復(fù)雜的項目,只是一個很簡單的main方法,并不是spring項目。可能是之前的開發(fā)走了,然后代碼丟失了,只剩下客戶那邊有一個用的jar包。

jar包:xxx-0.0.1-SNAPSHOT-jar-with-dependencies.jar

二、反編譯

先對jar包進行反編譯,拿到j(luò)ava代碼

1. 在idea中找到decompiler插件

Jar包反編譯,修改代碼后,重新打jar包

2. 找到這個插件的地址(在idea的安裝目錄中)

Jar包反編譯,修改代碼后,重新打jar包

?3. 新建一個文件夾(存放反編譯后的代碼)

例如:文件夾名稱叫decompile_file

4. 開始反編譯

在剛剛創(chuàng)建的文件夾中,右擊,git bash,執(zhí)行

java -cp "D:\xxx\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true Esdataproducer-0.0.1-SNAPSHOT-jar-with-dependencies.jar decompile_file

記得修改文件路徑和文件名?

5. 得到反編譯后的代碼

文件夾中會出現(xiàn)一個跟反編譯前名稱一模一樣的jar包,解壓它,得到如下代碼

Jar包反編譯,修改代碼后,重新打jar包

?三、運行代碼

把反編譯后的代碼導(dǎo)入idea中,會發(fā)現(xiàn),之前項目的jar包都會反編譯成代碼

Jar包反編譯,修改代碼后,重新打jar包

?我沒有調(diào)試好,選擇新建一個maven項目,然后把我需要的代碼拷進去。

Jar包反編譯,修改代碼后,重新打jar包

?把需要的相關(guān)依賴放入pom中,此時,項目可以正常跑了。

四、重新打包

代碼修改完成后,需要重新打包

1. 直接通過maven package打包

得到xxx-1.0-SNAPSHOT.jar, 放到服務(wù)器上執(zhí)行

報錯:xxx-1.0-SNAPSHOT.jar中沒有主清單屬性

搜了一下報錯,是因為沒有main-class。看了一眼之前反編譯后的代碼,里面有MANIFEST.MF文件,這個文件指定了main-class

Jar包反編譯,修改代碼后,重新打jar包

2.? 在pom中加manifest配置

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.xxx</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

此時,maven package打包生成?xxx-0.0.1-SNAPSHOT-jar-with-dependencies.jar 可以使用

3. 手動生成MANIFEST

Jar包反編譯,修改代碼后,重新打jar包

生成 MANIFEST文件,但是此時maven package后MANIFEST文件跟生成的不一樣

Jar包反編譯,修改代碼后,重新打jar包

還可以按照以下操作生成jar包?

?Jar包反編譯,修改代碼后,重新打jar包

?Jar包反編譯,修改代碼后,重新打jar包

?bulid完,會生成一個jar包

Jar包反編譯,修改代碼后,重新打jar包

?這個jar包也可以運行,不過生成的名稱是xxx.jar, 給我的jar包是xxx-0.0.1-SNAPSHOT-jar-with-dependencies.jar這種格式,所以我最后選擇的是上面那種方法,在pom中加manifest配置這種方式重新打包。文章來源地址http://www.zghlxwxcb.cn/news/detail-400100.html

到了這里,關(guān)于Jar包反編譯,修改代碼后,重新打jar包的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 關(guān)于安卓jar包修改并且重新發(fā)布

    關(guān)于安卓jar包修改并且重新發(fā)布

    背景: 對于某些jar包,其內(nèi)部是存在bug的,解決的方法無外乎就有以下幾種方法: (1)通過反射,修改其賦值邏輯 (2)通過繼承,重寫其方法 (3)修改jar包的源碼,從根源上修復(fù)問題 對于改動量,難易程度,(1)和(2)都是比較適合的,但是,有些情況下,不能滿足修

    2024年02月13日
    瀏覽(20)
  • 【Java用法】windows10系統(tǒng)下修改jar中的文件并重新打包成jar文件然后運行

    【Java用法】windows10系統(tǒng)下修改jar中的文件并重新打包成jar文件然后運行

    測試環(huán)境(Linux)的代碼(jar包)拉取到本地電腦(Windows10),然后連接本地電腦上的數(shù)據(jù)庫并在本地電腦運行。 前提:Windows10電腦,jar包文件,本地電腦已安裝好MySQL數(shù)據(jù)庫。 需求:需要將下面jar包中配置文件的數(shù)據(jù)庫連接地址修改成本地電腦連接地址,并把修改后的配置

    2024年02月12日
    瀏覽(20)
  • 【Linux】linux下使用命令修改jar包內(nèi)某一個文件中的內(nèi)容并重新運行jar程序

    【Linux】linux下使用命令修改jar包內(nèi)某一個文件中的內(nèi)容并重新運行jar程序

    需求:發(fā)現(xiàn)線上的 iotp-irsb-server-v1.0.0.2.jar 包中配置文件的日志級別配置錯誤,需要在線修改jar包中文件的application-prod.yml的日志級別配置,修改完成后并重啟該jar包。 進入到該jar包所在的目錄,使用 vi 命令打開 jar 包內(nèi)文件列表。 1、vi iotp-irsb-server-V1.0.0.2.jar 如下圖所示:

    2024年02月08日
    瀏覽(22)
  • hive 3.1.3 on spark 3.0.0 安裝教程 (內(nèi)附重新編譯好的jar包)

    hive 3.1.3 on spark 3.0.0 安裝教程 (內(nèi)附重新編譯好的jar包)

    首先,如果想要在hive 3.1.3上使用spark 3.0.0,不可避免地要重新編譯hive 如果只是配置了hive-site.xml和spark-defaults.conf,那么在插入測試的時候會報如下錯誤: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed during runtime. Please check stacktrace for the

    2024年01月21日
    瀏覽(16)
  • 如何修改JAR包內(nèi)的代碼

    如何修改JAR包內(nèi)的代碼

    有時候由于找不到源碼,只有一個jar包,但又想去修改jar包中的代碼,就可以進行將jar包反編譯后,修改,再重新編譯的方式來實現(xiàn)。 一、下載反編譯軟件JD-GUI https://github.com/java-decompiler/jd-gui/releases 二、用JD-GUI打開所要修改代碼的jar包 三、將要修改的代碼復(fù)制到一個新的

    2024年02月08日
    瀏覽(17)
  • 外部配置文件和Class打包到j(luò)ar 然后重新啟動java -jar

    我這邊以demo.jar和application-dev.properties配置文件為例 一.將Test1.class和Test2.class替換到j(luò)ar內(nèi)部 步驟1:解壓原始demo.jar 將兩個class文件拷貝到j(luò)ar目錄下后cd到文件目錄執(zhí)行: 步驟2:替換或添加class文件 步驟3:重新打包jar 二、優(yōu)先加載外部的配置文件application-dev.properties,啟動ja

    2024年01月19日
    瀏覽(28)
  • VS2019編譯器修改背景壁紙(寫代碼背景不再單薄,試試換一張清晰的美女照片)

    VS2019編譯器修改背景壁紙(寫代碼背景不再單薄,試試換一張清晰的美女照片)

    第一步:打開vs2019編譯器,在上方菜單欄找到【擴展】-【管理擴展】-【聯(lián)機】,在右方搜索欄搜索“claudiaIDE”,找到ClaudiaIDE 2019,點擊下載 第二步:下載完成后,關(guān)閉所有的VS文件,關(guān)閉VS后回到桌面,發(fā)現(xiàn)有一個“VSIX Installer”的彈窗,選擇“Modify”進行安裝,等到修改完

    2023年04月21日
    瀏覽(29)
  • 關(guān)于jar包的命令:運行jar包時指定端口、直接修改jar包里的配置文件

    關(guān)于jar包的命令:運行jar包時指定端口、直接修改jar包里的配置文件

    如下:指定端口為8081,不管jar包里面之前是指定了什么端口號,最終訪問服務(wù)時還是以8081這個端口進行訪問 vim進入jar包后,會有類似如下的的內(nèi)容 在定位到具體某行(文件名)后,該文件會有提示,直接回車進入編輯模式,即可編輯了

    2024年02月12日
    瀏覽(22)
  • mvn build jar依賴和源碼本身分開。減輕編譯后的jar大小

    問題場景:平時在springboot項目中,打jar包都是默認把開發(fā)的代碼和依賴jar包都打到一個jar包里,導(dǎo)致每次打包費時而且jar包還很大,升級一下都要把一個很大的包拷來拷去。如果是修改問題需要頻繁替換jar包,那簡直要瘋 解決方案:把代碼包打成我們需要的jar包,把依賴的

    2024年02月14日
    瀏覽(19)
  • 修改jar包內(nèi)容

    windows下修改jar包的內(nèi)容: 1、使用winrar解壓jar包,或者使用 jar -xvf xxx.jar 命令解壓 2、進行需要的修改 3、cmd中進入解壓的目錄 4、運行命令 jar -cvfm0 xxx.jar META-INF/MANIFEST.MF ./ 解壓 注意要加 m 參數(shù),指定清單文件,否則生成的jar包無法運行。 參數(shù)解釋: c 創(chuàng)建一個jar包 v 輸出詳

    2024年02月05日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包