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

我又来了,关于 Javac 和 Maven 编译的 class 文件字节码结果不一样的问题

  •  
  •   misaka19000 · 2016-10-14 10:10:06 +08:00 · 3048 次点击
    这是一个创建于 2994 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在上一篇帖子同样的 Java 文件,为什么直接用 Javac 编译和使用 Maven 编译出来所得到的字节码不一样?提到过这个问题,现在我已经把 Maven 的 jdk 版本给改掉了,但是为什么编译出来的字节码还是不一致呢?

    Maven 编译的结果:

    cafe babe 0000 0033 0016 0a00 0300 1307
    0014 0700 1501 0006 3c69 6e69 743e 0100
    0328 2956 0100 0443 6f64 6501 000f 4c69
    6e65 4e75 6d62 6572 5461 626c 6501 0012
    4c6f 6361 6c56 6172 6961 626c 6554 6162
    6c65 0100 0474 6869 7301 0013 4c63 6f6d
    2f64 7174 2f74 6573 742f 5465 7374 3b01
    0004 6d61 696e 0100 1628 5b4c 6a61 7661
    2f6c 616e 672f 5374 7269 6e67 3b29 5601
    0004 6172 6773 0100 135b 4c6a 6176 612f
    6c61 6e67 2f53 7472 696e 673b 0100 0169
    0100 0149 0100 0a53 6f75 7263 6546 696c
    6501 0009 5465 7374 2e6a 6176 610c 0004
    0005 0100 1163 6f6d 2f64 7174 2f74 6573
    742f 5465 7374 0100 106a 6176 612f 6c61
    6e67 2f4f 626a 6563 7400 2000 0200 0300
    0000 0000 0200 0000 0400 0500 0100 0600
    0000 2f00 0100 0100 0000 052a b700 01b1
    0000 0002 0007 0000 0006 0001 0000 0003
    0008 0000 000c 0001 0000 0005 0009 000a
    0000 0009 000b 000c 0001 0006 0000 003b
    0001 0002 0000 0003 033c b100 0000 0200
    0700 0000 0a00 0200 0000 0500 0200 0600
    0800 0000 1600 0200 0000 0300 0d00 0e00
    0000 0200 0100 0f00 1000 0100 0100 1100
    0000 0200 12
    

    直接用 javac 编译的结果:

    cafe babe 0000 0033 000f 0a00 0300 0c07
    000d 0700 0e01 0006 3c69 6e69 743e 0100
    0328 2956 0100 0443 6f64 6501 000f 4c69
    6e65 4e75 6d62 6572 5461 626c 6501 0004
    6d61 696e 0100 1628 5b4c 6a61 7661 2f6c
    616e 672f 5374 7269 6e67 3b29 5601 000a
    536f 7572 6365 4669 6c65 0100 0954 6573
    742e 6a61 7661 0c00 0400 0501 0011 636f
    6d2f 6471 742f 7465 7374 2f54 6573 7401
    0010 6a61 7661 2f6c 616e 672f 4f62 6a65
    6374 0020 0002 0003 0000 0000 0002 0000
    0004 0005 0001 0006 0000 001d 0001 0001
    0000 0005 2ab7 0001 b100 0000 0100 0700
    0000 0600 0100 0000 0300 0900 0800 0900
    0100 0600 0000 1f00 0100 0200 0000 0303
    3cb1 0000 0001 0007 0000 000a 0002 0000
    0005 0002 0006 0001 000a 0000 0002 000b
    
    2 条回复    2016-10-15 00:11:13 +08:00
    sutra
        1
    sutra  
       2016-10-14 10:21:08 +08:00   ❤️ 1
    Try this `javac -g` and then compare to Maven's.
    SoloCompany
        2
    SoloCompany  
       2016-10-15 00:11:13 +08:00
    debug symbol
    你想研究清楚,就在执行 mvn -X 看清楚所有 javac 选项来对比
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3177 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:37 · PVG 08:37 · LAX 16:37 · JFK 19:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.