2013-02-26 2 views
5

Изучение сертификации оракула Я пытаюсь использовать все возможные сценарии, которые могут возникнуть во время экзамена. Например, здесь есть немного сомнений в командной строке оболочки (на основе UNIX):-sourcepath vs -classpath

Давайте представим, есть папка под названием myProject и подпапка под названием myProject/source.

Файл SubFile.java находится в папке myProject/source и другой файл File.java находится в myProject папке.

Введя следующие команды, которые я получаю в различных поведений:

cd source (поэтому, в настоящее время я нахожусь на "MyProject/источник")

javac -sourcepath ../ File.java
// Команда ../ не работает чтобы получить доступ к «папка» затем после компиляции File.java из myProject папки и возвращение к югу папки, если я стараюсь:

javac -classpath ../ SubFile.java

// с флагом -classpath, похоже, для получения доступа к папке super, требуется синтаксис ../.

Знаете ли вы, почему это работает? и, кроме того, есть ли доступ к папке super с флагом -sourcepath?

ответ

3

Это зависит от того, относится ли SubFileFile.

Рассмотрим следующий код:

public class SubFile { 
    private static File file = new File(); 
} 

Предполагается, что этот файл находится в папке источника, и предполагается, что вы находитесь в исходной папке, затем

javac -sourcepath ../ SubFile.java 

компилирует SubFile.java в SubFile.class внутри исходной папки и скомпилирует File.java в File.class в родительской папке. Если между этими файлами нет зависимости, тогда компилятор будет не компиляции File.java (означает, что компилятор не будет автоматически компилировать все файлы на sourcepath).

При компиляции с -classpath, то путь к классам, также искали исходные файлы, если вы явно не указать отдельный SourcePath - в следующем случае компилятор выдаст сообщение об ошибке (предполагается, что вы очистили File.class файл ранее):

javac -classpath .. -sourcepath \temp SubFile.java 

Смотрите также javac - Java programming language compiler и Differences between classpath and sourcepath options of javac для получения дополнительной информации.

Важный момент из этих двух ссылок:

Примечания: Классы, найденные по пути класса могут подвергаться автоматической перекомпиляции, если их источники также найдены.

Смежные вопросы