бинарный Java-сборка варьируется в зависимости от порядка исходных файлов - PullRequest
3 голосов
/ 27 марта 2012

Я использую компилятор javac и обнаружил, что он создает разные результирующие двоичные файлы .class в зависимости от порядка исходных файлов, передаваемых в качестве параметра. Фактически, это вопрос компиляции с помощью ANT или MAVEN, потому что они упорядочивают файлы по-разному.

Между 2 сборниками были различия. Я разобрал код и обнаружил, что javac (оптимизатор?) Удаляет устаревшие инструкции по сборке java jsr / ret из одной из компиляций.

Мне интересно, является ли это поведение результатом "неявной" компиляции: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/solaris/javac.html#searching

  • Кто-нибудь может объяснить это поведение?

  • Как мне сгенерировать "идемпотентный" процесс компиляции в ANT и MAVEN, где порядок исходных файлов, передаваемых компилятору, не имеет значения?

1 Ответ

0 голосов
/ 27 марта 2012

Вы можете получить список своих источников, а затем отсортировать их в алфавитном порядке, включая полный путь.Это сделало бы его согласованным между прогонами.

...