Проблемы и зависимости компиляции командной строки Java - PullRequest
1 голос
/ 14 апреля 2011

У меня следующая структура класса:

Main Class: WordNet.java
WordNet.java uses SAP.java
SAP.java uses DeluxeBFS.java

Когда я запускаю команду

$ javac WordNet.java

Я получаю обратно

WordNet.class
WordNet$Synset.class
SAP.class
DeluxeBFS.class
DeluxeBFS$markDist.class

Synset и markDist являются частнымиклассы.

Однако я не понимаю, почему, если я внесу изменение в DeluxeBFS и перекомпилирую WordNet, это изменение не скомпилируется. Поскольку WordNet зависит от DeluxeBFS, не должен компилятор java перекомпилироватьсяэто если изменение сделано?Кажется, что файл даже не тронут.

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Вы ответили на свой вопрос - javac не будет перекомпилировать все зависимости, только файлы, указанные в качестве входных данных.На самом деле это преимущество - IDE, такие как Eclipse, будут компилировать только измененные файлы, а не всю кодовую базу

1 голос
/ 14 апреля 2011

Нет, компилятор находит файл класса для DeluxeBFS, и на этом все заканчивается - он не пытается найти его источник (который, конечно, может быть где-нибудь ).

В общем, хорошая идея перекомпилировать все, когда вы собираете из командной строки с помощью javac.

Если вам нужна инкрементная компиляция, которая замечает, какие файлы были изменены и т. Д., Вы должны использовать что-то в IDE, например, Eclipse.

...