欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用jar包反編譯形成pom工程

 更新時間:2022年06月20日 10:47:04   作者:玉離騷  
這篇文章主要介紹了使用jar包反編譯形成pom工程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

這周接了一個需要吧把jar還原代碼新建pom項目的工作,一百多個jar還是挺累的,鼠標用的都不靈敏了。當然這只是量的問題,下面記錄一下具體的操作方法。

1. 反編譯jar得到源碼

1.1 使用jd-gui工具

這個不需要安裝,下載之后壓縮包里面有exe應(yīng)用程序。打開jd-gui.exe,先設(shè)置一下反編譯后不需要有注釋。點擊help -> preferences, 不要勾選write original line number 和write metadata

1.2 點擊file - > open file 選中需要反編譯的jar

或者直接把jar拖入到j(luò)d-gui的窗口。左邊是列舉包路徑和文件,右邊的窗口是顯示源代碼的

1.3 保存反編譯的源代碼

file -> save all source ,它會以zip的形式保存在本地計算機。

反編譯之后的源文件有些是正常的,有部分可能是需要人工修復一下代碼,比如反編譯后有g(shù)oto關(guān)鍵詞,super指向報錯等問題??梢該Q其他的反編譯工具試試,再比對反編譯之后的差異進行參考對其修復代碼。這里還介紹一個反編譯工具luyten,最新版本是0.0.5。其他的根據(jù)也很多,可以網(wǎng)上搜索。

如果同時使用不同的反編譯工具,建議以某一個為主,其他做輔助參考。因為不同的反編譯工具反編譯之后的代碼是有些差異的。比如變量名稱,gd-gui是反編譯是String str ,luyten 反編譯是 String name,當然這個變量在整個類或者方法中都是一致的,不會報錯關(guān)系不大,只是可閱讀性是否容易看懂源碼。格式上gd-gui會有很多斷行空行沒luyten整齊好閱讀。luyten 的反編譯速度沒jd-gui快(luyten點擊單個文件后右下角會顯示進度條,100%時右邊窗口就顯示代碼了)

2. ideal新建pom工程

2.1 file ->new ->project

選擇maven選項,project SDK如果是第一次使用ideal的選擇一下本機的jdk安裝目錄,點擊下一步

2.2 GroupId 和 ArtifactId 可以自定義填寫

建議都寫項目名稱,版本號自定義也可默認不修改

2.3 項目名稱和項目文件保存路徑會自動填入

(第一次使用ideal需要設(shè)置一下項目路徑)

2.4 新建好的項目結(jié)構(gòu)如下

3. 復制jar源碼到pom工程

3.1 解壓上面1.3那個步驟輸出的zip

只需要復制主要代碼到新pom項目下的src-main-java目錄下

若解壓后發(fā)現(xiàn)里面還有jar,說明你這個jar當時創(chuàng)建的時候本來就用了別人的jar,那這些解壓后的jar在新建的pom工程肯定也是需要用上的,可以參考下面的3.2.1 步驟,也可以直接放在項目下和main-src-java 同一級目錄就行,然后選中這些jar右鍵 選as Library 構(gòu)建依賴。建議用下面3.2.1步驟的方案比較規(guī)范一些。

3.2 補充pom文件里面的配置

項目需要用到哪些jar都需要在此寫好(文章末尾附有參考pom.xml文件),以下只列舉了幾個公網(wǎng)上可以自動下載到的jar。每次修改了pom文件后,右下角會出現(xiàn)彈框,點擊import changes才會刷新依賴,java文件里面才能引用到新加的架包

3.2.1 如果用到了自己封裝的jar,需要在本地倉庫(我的是安裝maven時默認的C:\Users\Administrator.m2\repository)下新建文件夾放好jar,下圖圈出的三個分別是groupId、artifactId、version,可以自定義命名,最后文件夾下的架包命名是artifactId-version.jar(如下圖就是fastjson-1.2.6.jar)

pom里面配置如下

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.6</version>
</dependency>

3.2.2 如果用到公司私服上的jar,需要在maven安裝目錄下的settings.xml文件里面配置私服的 地址/鏡像。

配置本地的maven倉庫地址

<localRepository>D:\my_mevan\repository</localRepository> # 自行修改本地地址

配置私服鏡像

	 <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/.../.../</url> # 填寫你的url
    </mirror>

3.2.3 如果別人給了整個倉庫給你,把倉庫復制到C:\Users\Administrator.m2\下即可,然后file->setting到下面這個界面,選擇別人給你的倉庫就不用自己本地的倉庫了。此處不建議把別人倉庫下的文件下合并到自己的repository下面,可能會有問題引用不到的喲

3.3 檢查源代碼

反編譯后有問題的代碼片段,根據(jù)代碼上下文進行修復或者自己寫個與原來功能一致的代替。若遇道switch(字符串)有紅色波浪線時(jdk1.7版本才開始支持字符串類型),可以參考如下設(shè)置file->Project Structure

Modules-> Source->language level選 8開頭的這個(一般大于7開頭均可)

3.4編譯打包

點擊右上側(cè)的maven打開推窗,編輯package進行編譯,等最下面的窗口打印日志,如果顯示Process finished with exit code 0 表示打包成功,Process finished with exit code 1 表示有錯誤,根據(jù)日志提示修改完錯誤重試。打包成功后會出現(xiàn)target文件夾,里面存放的是編譯之后的class和輸出的jar

pom文件附件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>yulisao</groupId>
    <artifactId>yulisao</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging> <!--打包輸出方式,可以是jar、war等格式 -->
    <name>這里寫你的項目名稱</name>
    <description>這里寫項目簡要描述</description>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <!--構(gòu)建項目配置-->  <!--這個可以解決因switch(字符串)無法編譯問題-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <!--這里是項目jar依賴節(jié)點配置-->
    <dependencies>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>
        <!--項目需要用到的架包,都依次按此格式寫好-->
    </dependencies>
</project>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Java信號量Semaphore的原理及使用

    詳解Java信號量Semaphore的原理及使用

    Semaphore來自于JDK1.5的JUC包,直譯過來就是信號量,被作為一種多線程并發(fā)控制工具來使用。本文將詳解其原理與使用方法,感興趣的可以學習一下
    2022-05-05
  • Sprigmvc項目轉(zhuǎn)為springboot的方法

    Sprigmvc項目轉(zhuǎn)為springboot的方法

    本篇文章主要介紹了Sprigmvc項目轉(zhuǎn)為springboot的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • SpringBoot注冊Servlet的三種方法詳解

    SpringBoot注冊Servlet的三種方法詳解

    這篇文章主要介紹了SpringBoot注冊Servlet的三種方法詳解,教你如何Spring Boot 注冊 Servlet、Filter、Listener,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Java從服務(wù)端下載Excel模板文件的兩種方法

    Java從服務(wù)端下載Excel模板文件的兩種方法

    這篇文章主要為大家詳細介紹了Java從服務(wù)端下載Excel模板文件的兩種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Java 異步線程監(jiān)聽與結(jié)果回調(diào)及異常捕獲總結(jié)分析

    Java 異步線程監(jiān)聽與結(jié)果回調(diào)及異常捕獲總結(jié)分析

    異常是程序之中導致程序中斷的一種指令流,異常一旦出現(xiàn)并且沒有進行合理處理的話,那么程序就將中斷執(zhí)行,這篇文章綜合介紹了異步線程監(jiān)聽與結(jié)果回調(diào)及異常捕獲
    2021-11-11
  • Java中不得不知的Collection接口與Iterator迭代器

    Java中不得不知的Collection接口與Iterator迭代器

    這篇文章主要介紹了Java中的Collection接口與Iterator迭代器,文中有詳細的代碼示例供大家參考,對我們的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-06-06
  • Java Iterator迭代器_動力節(jié)點Java學院整理

    Java Iterator迭代器_動力節(jié)點Java學院整理

    迭代器是一種模式,它可以使得對于序列類型的數(shù)據(jù)結(jié)構(gòu)的遍歷行為與被遍歷的對象分離,接下來通過本文給大家分享Java Iterator迭代器_動力節(jié)點Java學院整理,需要的朋友參考下吧
    2017-05-05
  • 基于Beanutils.copyProperties()的用法及重寫提高效率

    基于Beanutils.copyProperties()的用法及重寫提高效率

    這篇文章主要介紹了Beanutils.copyProperties( )的用法及重寫提高效率的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot參數(shù)驗證10個技巧值得收藏

    SpringBoot參數(shù)驗證10個技巧值得收藏

    Spring Boot提供了內(nèi)置的驗證注解,可以幫助簡單、快速地對輸入字段進行驗證,例如檢查 null 或空字段、強制執(zhí)行長度限制、使用正則表達式驗證模式以及驗證電子郵件地址,那么在Spring Boot應(yīng)用中如何做好參數(shù)校驗工作呢,本文提供了10個小技巧感興趣的朋友一起看看吧
    2023-08-08
  • netty?pipeline中的inbound和outbound事件傳播分析

    netty?pipeline中的inbound和outbound事件傳播分析

    這篇文章主要為大家介紹了netty?pipeline中的inbound和outbound事件傳播分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04

最新評論