Например, у меня установлены OpenJDK 6 и 7. Если я запускаю javac, foo.java скомпилирует мою программу как программу Java 6 или программу Java 7?
Дистрибутивы на основе Debian имеют так называемую систему «альтернатив», которая позволяет установить более одной программы, выполняющей одну и ту же функцию (это также включает разные версии одной и той же программы, такие как Java 6 и Java 7). Как указывает @ user15936, система работает путем манипулирования символическими ссылками, поэтому «javac» может указывать на исполняемый файл либо из OpenJDK 6, либо из OpenJDK 7
Команда для манипулирования вышеупомянутыми символическими ссылками (процесс на самом деле более сложный, чем тот, который включает некоторую конфигурацию, например, изменение man-страниц и т. д.) - называется update-alternatives
. Вы можете узнать, как его использовать, набрав man update-alternatives
в терминале.
Чтобы напрямую ответить на ваш вопрос, можно еще одним способом определить, какой исполняемый файл javac будет вызываться, выполнив
update-alternatives --display javac
Вы должны ввести терминал javac -version
и там вы получите ответ ...
Ответ в зависимости от того, что связано с /usr/bin/javac
Это будет выполнено.
Вы можете увидеть это, перейдя к /usr/bin/
и увидев, что javac связан с помощью ls -l javac
.