Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 罐子大小因人而异_Java_Eclipse_Ant_Jar - Fatal编程技术网

Java 罐子大小因人而异

Java 罐子大小因人而异,java,eclipse,ant,jar,Java,Eclipse,Ant,Jar,所以,我有一个有趣的问题。我有三个人使用同一个ant build xml文件为一个Eclipse项目创建了一个jar文件,这个文件在两个月内没有改变。我们每个人都使用这个xml文件进行构建,我们每个人都得到一个不同大小的jar(62KB、78KB和101KB)。而且,当我对它们进行winmerge时,它们会有很大的不同 什么会导致这种差异?首先要尝试的是:将它们全部复制到同一台计算机上,在不同的目录中解压,然后在未压缩的版本上运行WinDiff(或其他)。这将使事情变得更加明显 其他可能性-默认

所以,我有一个有趣的问题。我有三个人使用同一个ant build xml文件为一个Eclipse项目创建了一个jar文件,这个文件在两个月内没有改变。我们每个人都使用这个xml文件进行构建,我们每个人都得到一个不同大小的jar(62KB、78KB和101KB)。而且,当我对它们进行winmerge时,它们会有很大的不同


什么会导致这种差异?

首先要尝试的是:将它们全部复制到同一台计算机上,在不同的目录中解压,然后在未压缩的版本上运行WinDiff(或其他)。这将使事情变得更加明显


其他可能性-默认情况下,不同版本的Java使用不同的压缩级别?

除了Jon的建议之外,ant script是否会选择用户偏好

例如,
build.properties
文件,可以位于项目目录、用户主目录等中


可能每个人的工作站上都有不同的项目自定义设置。

听起来,当流程开始时,被合并在一起的文件夹并不是空的。

我能看到的唯一区别是:

  • 环境变量的差异导致编译器的差异。您的ant脚本是否使用常规javac之外的任何其他实用程序进行编译或打包?它是否使用AspectJ或其他组装工具?这取决于不同机器的不同环境变量吗
  • 依赖jar的大小不同(例如,其中一个可能有commons-logging-1.8,而另一个可能有不同的版本)
  • 您是否从ant调用任何其他进行依赖关系管理的构建实用程序,例如ivy
    你说winmerge显示了巨大的差异。这些w.r.t.是jar内各种组件的大小,还是存在结构差异(文件夹结构、不同文件等)?后者肯定更令人困惑。

    当您运行winmerge时,这是针对压缩的jar还是针对未压缩的jar?这些结果是在相同的平台上还是不同的平台上?另外,即使JAR文件不同,如果你把它们解包,所有的文件都是一样的吗?啊,很好。我提取了它们并比较了未压缩的版本。两个比另一个更相似。有趣的是,我似乎正在使用Ant1.7.1,但另一个正在使用Ant1.7.0。除此之外,我们三个都只使用1.7.0。奇怪。听起来是建立构建服务器的好时机。我不知道。我必须看看这个文件是否存在,也许还有其他文件被卷入其中。你能告诉我其他人要找的方向吗?@dopyii。在build.xml和顶级build.xml导入的任何文件中查找
    任务。我将它们都放在同一台计算机上。在提取它们之后,我确实看到了一些我未能从项目中删除的度量文件的一个非常明显的差异。除此之外,类文件名和结构是相同的。但是,由于某些原因,类文件被标记为不同。我们也都在使用Java1.6.0.17,压缩级别应该是相同的。我想我发现的问题比答案多。很好的建议。1:可能有不同的EV,但我们都使用相同的编译器和版本。不使用其他打包实用程序。2:这是值得研究的。我们使用许多FOSS/COTS产品,因此根据构建和包含顺序可能会选择不同的版本(这是一个可怕的想法)。3:不是这样的。winmerge中显示的差异表明字节码是不同的。长度不同,约有1/2的内容不同。