Безопасно ли запускать несколько экземпляров javac в связанных файлах java?

#java #javac

#Ява #javac

Вопрос:

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

Если я разверну N экземпляров javac и попытаюсь скомпилировать эти классы параллельно, существует ли риск того, что различные экземпляры перезапишут выходные файлы друг друга и выйдут из строя из-за неверных ожиданий относительно состояния файловой системы?

Комментарии:

1. Хотя я не могу говорить о параллельном запуске javac для вывода в один и тот же каталог, не должно быть никаких проблем с запуском нескольких javac экземпляров в разные выходные каталоги (т. Е. с использованием javac -d OUTPUT_DIR )

2. Небезопасно. Не делай этого.

3. Обратите внимание, что в отличие от компилятора C, который может работать независимо с различными файлами «.c», компилятору Java нужны файлы классов связанных классов. Поэтому, если у вас есть класс A, класс B расширяет A, класс C расширяет B, то для компиляции класса C компилятору нужны файлы классов для классов A и B (и он создает их сам, если не находит их). Если другой экземпляр javac будет компилировать классы A и B отдельно, в худшем случае файл класса для класса A создается три раза, в лучшем случае только напрасно тратя ресурсы.