Может ли кто-нибудь объяснить, как идентичные источники Java могут завершить компиляцию в двоичные файлы разных классов?
Возникает вопрос о следующей ситуации:
Мы имеем довольно большое приложение (800+ классов), которое было разветвлено, реструктурировано, а затем снова интегрировано в багажник. До реинтеграции мы объединили багажник в филиал, который является стандартной процедурой.
Конечным результатом был набор каталогов с источниками ветвления и набор каталогов с источниками соединительных линий. Используя Beyond Compare, мы смогли определить, что оба набора источников идентичны. Однако при компиляции (тот же JDK, использующий maven, размещенный в IntelliJ v11), мы заметили, что около дюжины файлов классов были разными.
Когда мы декомпилировали источник для каждой пары явно разных файлов классов, мы оказались с одним и тем же источником java, поэтому с точки зрения конечного результата это, похоже, не имеет значения. Но почему именно несколько файлов отличаются друг от друга?
Спасибо.
Дополнительная мысль:
Если maven/javac компилирует файлы в другой последовательности, может ли это повлиять на конечный результат?