为什么maven打包的class文件和eclipse编译出的class文件大小会出现不一致?

dwk126 2016-02-24 10:44:23
maven 打包后的大小是 9788 字节

打包前也就是 eclipse 编译后的大小是 9800 字节



...全文
1481 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
dada1233211234567 2017-12-14
  • 打赏
  • 举报
回复
https://www.cnblogs.com/liushuijinger/p/4380407.html
tianfang 2016-03-10
  • 打赏
  • 举报
回复
你把两个jar包解压一下 做比较,把不同的列一下。有差异的 文本文件直接比较 class文件 用ultraedit二进制查看,列一下前32字节的值 还有就是jar文件实际是zip格式压缩文件,压缩参数不同也会导致jar文件大小不同
dwk126 2016-03-10
  • 打赏
  • 举报
回复
自己顶。。。。
tianfang 2016-03-10
  • 打赏
  • 举报
回复
看了半天class文件结构 maven compiler 参数,没搞明白 文件结构 https://en.wikipedia.org/wiki/Java_class_file http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html 参数 https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html 应该是编译(javac)参数导致不同
dwk126 2016-03-10
  • 打赏
  • 举报
回复
图的上面是eclipse编译的,下面是mvn编译的
dwk126 2016-03-10
  • 打赏
  • 举报
回复
引用 27 楼 tianfang 的回复:
你把两个jar包解压一下 做比较,把不同的列一下。有差异的

文本文件直接比较
class文件 用ultraedit二进制查看,列一下前32字节的值

还有就是jar文件实际是zip格式压缩文件,压缩参数不同也会导致jar文件大小不同

这个应该不是压缩的问题,看的都是直接编译在target目录下的文件,不涉及压缩。下面是二进制文件的截图:



dwk126 2016-03-08
  • 打赏
  • 举报
回复
引用 24 楼 tianfang 的回复:
你的pom中是否包含输入输出的jdk版本定义?如果没有这个缺省值好像是1.5.即使你的jdk是1.8,编译的class是可以按缺省值编译的 eclipse中项目的jdk版本是项目属性中编辑,保存在.classpath中。两个编译的class的jdk版本可能不同
这个有,上面的截图就有。
tianfang 2016-03-08
  • 打赏
  • 举报
回复

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
		</plugins>
你的pom中是否包含输入输出的jdk版本定义?如果没有这个缺省值好像是1.5.即使你的jdk是1.8,编译的class是可以按缺省值编译的 eclipse中项目的jdk版本是项目属性中编辑,保存在.classpath中。两个编译的class的jdk版本可能不同
tianfang 2016-03-08
  • 打赏
  • 举报
回复

dwk126 2016-03-07
  • 打赏
  • 举报
回复
[/quote]不是配置啊...这个跟配置什么关系?[/quote] 可能没表达清楚。我的意思是maven编译的应该是正常的,而eclipse编译出来可能在哪个环节有特殊的配置导致成这样的,我想知道是eclipse哪点引起的,因为用的都是同一个JDK,编译版本也一样。 刚才我确认了下,不单单是截图中的一个文件maven打包出来的和eclipse编译出来的不一样,其他的class文件都有这个问题。
dwk126 2016-03-07
  • 打赏
  • 举报
回复
引用 17 楼 tianfang 的回复:
[quote=引用 16 楼 dwk126 的回复:]
[quote=引用 14 楼 tianfang 的回复:]
META-INF 下属性文件和maven文件会有微小差异

请问下这个是什么意思。谢谢!


[/quote]
你用winrar把jar包打开,就可以看到这个了[/quote]
恩 谢谢。这个我我看了下打包后的jar,这个文件里面展示的版本和我本地的都是一样的。
dwk126 2016-03-03
  • 打赏
  • 举报
回复
引用 14 楼 tianfang 的回复:
META-INF 下属性文件和maven文件会有微小差异
请问下这个是什么意思。谢谢!
dwk126 2016-03-03
  • 打赏
  • 举报
回复
引用 13 楼 scmod 的回复:
[quote=引用 7 楼 dwk126 的回复:] 求帮忙解释下这个问题吗!!!!!!!!
额..之前说了eclipse编译器跟sun的不一样....应该是这个问题吧... eclipse编译一直是用自带有个ecj什么的...[/quote] 确实是这个问题,但是我找不到到底是哪一点配置的问题导致成这样的,本机只有一个JDK。
  • 打赏
  • 举报
回复
这个我还真没注意过
scmod 2016-03-03
  • 打赏
  • 举报
回复
引用 15 楼 dwk126 的回复:
[quote=引用 13 楼 scmod 的回复:] [quote=引用 7 楼 dwk126 的回复:] 求帮忙解释下这个问题吗!!!!!!!!
额..之前说了eclipse编译器跟sun的不一样....应该是这个问题吧... eclipse编译一直是用自带有个ecj什么的...[/quote] 确实是这个问题,但是我找不到到底是哪一点配置的问题导致成这样的,本机只有一个JDK。[/quote] 不是配置啊...这个跟配置什么关系?
tianfang 2016-03-03
  • 打赏
  • 举报
回复
引用 16 楼 dwk126 的回复:
[quote=引用 14 楼 tianfang 的回复:] META-INF 下属性文件和maven文件会有微小差异
请问下这个是什么意思。谢谢! [/quote] 你用winrar把jar包打开,就可以看到这个了
dwk126 2016-03-02
  • 打赏
  • 举报
回复
引用 9 楼 dl0408 的回复:
eclipse集成的maven和你装的maven不一致,

这个是一致的,而且我通过cmd控制台下打包出来的class文件也是同样的问题,和eclipse编译出来的class大小不一样。
等于现在就是我通过eclipse的maven打包和cmd控制台的maven命令打包出来的结果都一样,而和eclipse编译出的结果不一样。

eclipse的maven路径:
tianfang 2016-03-02
  • 打赏
  • 举报
回复
META-INF 下属性文件和maven文件会有微小差异
scmod 2016-03-02
  • 打赏
  • 举报
回复
引用 7 楼 dwk126 的回复:
求帮忙解释下这个问题吗!!!!!!!!
额..之前说了eclipse编译器跟sun的不一样....应该是这个问题吧... eclipse编译一直是用自带有个ecj什么的...
Lockie921 2016-03-02
  • 打赏
  • 举报
回复
肯定是编译的问题呗,你纠结这个干什么啊。
加载更多回复(10)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧