同样的 Java 文件,为什么直接用 Javac 编译和使用 Maven 编译出来所得到的字节码不一样?

2016-10-13 17:10:43 +08:00
 misaka19000

如图,上面的是直接编译的结果,下面是用 Maven 编译的结果,为什么结果会不一样?

直接编译结果:

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 0200 0900 0800 0900
0100 0600 0000 1f00 0100 0200 0000 0303
3cb1 0000 0001 0007 0000 000a 0002 0000
0004 0002 0005 0001 000a 0000 0002 000b

Maven 编译:

cafe babe 0000 0031 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 0002
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 0400 0200 0500
0800 0000 1600 0200 0000 0300 0d00 0e00
0000 0200 0100 0f00 1000 0100 0100 1100
0000 0200 12
4427 次点击
所在节点    编程
10 条回复
ilanyu
2016-10-13 18:11:43 +08:00
上面的是 JDK 1.7 ,下面是 1.5
ob
2016-10-13 18:38:48 +08:00
@ilanyu 卧槽,怎么看出来的?
LaudOak
2016-10-13 18:41:10 +08:00
@ilanyu 膜拜
winooxx
2016-10-13 18:43:20 +08:00
@ilanyu 今天份的膝盖给你了
misaka19000
2016-10-13 19:06:49 +08:00
@ilanyu 对,但是不知道为什么会这样? Maven 调用的难道不是环境变量 JAVA_HOME 对应的 Java 程序吗?
misaka19000
2016-10-13 19:07:22 +08:00
@ob
@LaudOak
@winooxx
看 33 和 31
arrow2015
2016-10-13 19:25:52 +08:00
cafe babe. byte code
daya
2016-10-13 19:31:30 +08:00
@ilanyu 膜拜
kaneg
2016-10-13 22:05:07 +08:00
你用的应该是 jdk1.7 , javac 编译出的默认和自己的版本一样, maven 则是在 pom 中控制的,估计你的 pom 中写的是 1.5
SoloCompany
2016-10-13 22:09:24 +08:00
maven 不配置 plugin 的情况下默认是 -source 1.5 -target 1.5

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/312555

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX