Is it possible for the same javac compiler to compile the same set of source files but produce class files of different checksums?

后端 未结 2 600
滥情空心
滥情空心 2021-01-22 17:22

I was attempting to compare the results of this: (in ant)

                       

        
相关标签:
2条回答
  • 2021-01-22 17:52

    I'm using javac compiler and I've found it produces different resulting binary .class files depending on the order of the source files passed as parameter. Between maven and ant I found differences. The order of the files were not the same.

    Anyway, between the 2 compilations there were differences. I've disassembled the code and I found the javac (optimizer?) was removing the deprecated java jsr/ret assembly instructions from one of the compilations.

    I don't know if this behaviour it's the result of "implicit" compilation: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/solaris/javac.html#searching

    0 讨论(0)
  • 2021-01-22 17:56

    as you showed, the difference is in the generated constant pool, which is really a non-issue, but troubling as you would expect the same output with the same compiler and options. i would bet that the compiler is called with the java files in different order between the two situations, and the order of compilation is affecting the result.

    0 讨论(0)
提交回复
热议问题