V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
will2zuo
V2EX  ›  Java

新手不懂就问: Java 中怎么将项目的 Jar 包转为代码呢?

  •  
  •   will2zuo · 2020-11-25 10:13:03 +08:00 · 4931 次点击
    这是一个创建于 1455 天前的主题,其中的信息可能已经有所发展或是发生改变。

    尝试用过 JD-GUI,但是转出来的代码不能用

    第 1 条附言  ·  2020-11-25 14:05:34 +08:00
    情况是这样,公司的代码在服务器上跑,只有 jar 包,然后这个代码仓库也没有,现在需要修改里面的内容
    25 条回复    2020-11-26 14:15:33 +08:00
    tikazyq
        1
    tikazyq  
       2020-11-25 11:10:19 +08:00   ❤️ 15
    怎么把一坨屎逆向为食物?
    will2zuo
        2
    will2zuo  
    OP
       2020-11-25 11:20:20 +08:00
    @tikazyq 你觉得你很幽默?
    motoude
        3
    motoude  
       2020-11-25 11:36:26 +08:00   ❤️ 2
    @will2zuo 话糙理不糙
    dethan
        4
    dethan  
       2020-11-25 11:42:16 +08:00 via Android
    idea 可以吧
    statement
        5
    statement  
       2020-11-25 11:46:03 +08:00 via iPhone   ❤️ 1
    转出来是给你看的。不是给你用的 告诉你屎是什么食物变的
    cheng6563
        6
    cheng6563  
       2020-11-25 11:52:08 +08:00 via Android   ❤️ 2
    http://www.javadecompilers.com/
    多试几个反编译器,一般 Fernflower 会比较好用
    lqw3030
        7
    lqw3030  
       2020-11-25 12:52:09 +08:00 via iPhone
    解压出来,然后作为项目用 idea 打开
    Joker123456789
        8
    Joker123456789  
       2020-11-25 12:57:51 +08:00
    一般 编译的时候,编译器会对源码做优化。 而反编译是将字节码反向编译成源码, 但是字节码是对源码优化后编译而成的,

    所以反编译出来的东西 跟源码是两码事,可读性非常差。
    est
        9
    est  
       2020-11-25 13:04:24 +08:00
    其实 @tikazyq 的比喻糙了一点。更好的比喻是,怎么把香肠还原成活猪?怎么把面包还愿成麦子?
    securityCoding
        10
    securityCoding  
       2020-11-25 13:09:27 +08:00
    拖到 idea 能自动反编译
    RedBeanIce
        11
    RedBeanIce  
       2020-11-25 13:40:48 +08:00
    拖到 idea 能自动反编译
    itsql
        12
    itsql  
       2020-11-25 13:50:52 +08:00
    直接用肯定不能用啊,换个方式就可以了啊
    nicevar
        13
    nicevar  
       2020-11-25 14:00:56 +08:00
    我不知道你是怎么想的,既然你想直接用为什么不用 jar 包?如果只想用部分代码,反编译出来代码你参考修改一下不就行了,难道你连这点都做不到?
    will2zuo
        14
    will2zuo  
    OP
       2020-11-25 14:02:57 +08:00
    @nicevar 意思是,公司的代码在服务器上跑,但是只有 jar 包,然后仓库里也没有,现在需要改这个项目。。
    kingfalse
        15
    kingfalse  
       2020-11-25 14:12:59 +08:00 via Android
    javassist,完美解决,我们有个很老的项目只有 jar 包我就是用这个搞定的,不过改动比较小
    xiaoliu926
        16
    xiaoliu926  
       2020-11-25 14:13:08 +08:00
    @will2zuo jar 包拖到 idea 里就能查看源码了。。。原样复制一份
    kingfalse
        17
    kingfalse  
       2020-11-25 14:14:36 +08:00 via Android
    反编译就算了,出来的都是残疾
    nicevar
        18
    nicevar  
       2020-11-25 15:12:35 +08:00
    @will2zuo 那你应该找公司的负责人要代码,一个项目的 jar 包除非少量的代码,否则肯定不可能反编译后能直接用的,你这不现实,解决办法就三个一就是找到源码、二是反编译成源码依葫芦画瓢、三就是反编译字节码修改(这个只适合小改动)。
    fengpan567
        19
    fengpan567  
       2020-11-25 15:39:48 +08:00
    反编译出来也用不了,如果是代码多的复杂工程,那就 GG 了
    PVG
        20
    PVG  
       2020-11-25 23:08:21 +08:00
    jd-gui,反编译工具一大堆
    volantRookie
        21
    volantRookie  
       2020-11-26 08:56:06 +08:00
    难道没有人想到他是 springboot 打的 jar 包,然后丢到服务器上跑的?如果是这样,那就好玩了,哈哈
    v2orz
        22
    v2orz  
       2020-11-26 09:11:20 +08:00
    1L 这个居然还这么多人点赞?人家又不是要做破解软件

    回到问题上来,反编译出来能改到可用的人不会问这个问题,不会改的,反编译出来也就是给你看看
    大多数情况下,你放到 idea 里面就可以了,还可以选择多种反编译插件的
    will2zuo
        23
    will2zuo  
    OP
       2020-11-26 09:59:32 +08:00
    @volantRookie 是用的 springboot
    will2zuo
        24
    will2zuo  
    OP
       2020-11-26 10:00:07 +08:00
    @v2orz 是的,现在只能放到 idea 里面看看
    volantRookie
        25
    volantRookie  
       2020-11-26 14:15:33 +08:00
    那源码不是在自己手上么,直接改源码再打个包放上去就完事了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3810 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:39 · PVG 18:39 · LAX 02:39 · JFK 05:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.