выходные данные компилятора (файлы .class) отличаются, если исходные файлы были скомпилированы в разных каталогах - PullRequest
0 голосов
/ 01 июля 2011

У меня следующая проблема: При компиляции некоторого набора классов разные файлы .class генерируются, если компиляция выполнялась в разных каталогах.Разница между сгенерированными файлами .class следующая:

1) версия:

1062: aload_3
1063: invokevirtual <some_method>
1066: goto 1078
1069: astore 15
1071: aload_3
1072: invokevirtual <some_method>
1075: aload 15
1077: athrow
1078: aload_3
1079: areturn

2) версия:

1062: jsr 1076
1065: goto 1084
1068: astore 15
1070: jsr 1076
1073: aload 15
1075: athrow
1076: astore 16
1078: aload_3
1079: invokevirtual <some_method>
1082: ret 16
1084: aload_3
1085: areturn

Приведенный выше код имеет ту же логику выполнения.К сожалению, у меня должно быть объяснение, почему компилятор ведет себя так.Что странно, иногда даже при компиляции в одном и том же каталоге, в одних и тех же источниках возникает разница между последовательными компиляциями (всегда одинаковые, упомянутые выше).

Есть идеи, что происходит?Заранее спасибо за ответ!

1 Ответ

0 голосов
/ 01 июля 2011

Использует ли класс какие-либо методы или классы, имеющие область действия уровня пакета?Это может объяснить любые различия.

...