Различия между путем к классу и sourcepath опциями javac

Я прочитал документацию Sun и много сообщений на Переполнении стека, но я все еще смущен различиями между параметрами компилятора Java -cp и -sourcepath.

Позвольте говорят, что у меня есть эта структура каталогов:

c:\Java\project1\src (where the Java source files are)  
c:\Java\project1\bin (where the Java class files will be or already are)  

Давайте также скажем, что у меня есть исходный файл MainClass.java в пакете com.mypackage, и что структура каталогов в порядке в исходной папке.

Я нахожусь в project1 каталоге и выполнен:

javac -d bin -sourcepath src src/com/mypackage/MainClass.java  

или

javac -d bin -classpath src src/com/mypackage/MainClass.java  

и я получаю тот же результат. В подробном режиме путь поиска для исходных файлов src в обоих случаях.

Было бы замечательно, если кто-либо мог бы помочь мне выяснить специфические особенности этих опций.

35
задан Perception 25 April 2012 в 18:44
поделиться

3 ответа

 -classpath classpath

Устанавливает путь пользовательского класса, переопределяя путь пользовательского класса в переменной окружения CLASSPATH. Если не указан ни CLASSPATH, ни -classpath, путь пользовательского класса состоит из текущего каталога.

Если опция -sourcepath не указана, путь пользовательского класса ищется в исходных файлах, а также в файлах классов.

-sourcepath sourcepath

Укажите путь к исходному коду для поиска определений классов или интерфейсов. Как и в случае с путем пользовательского класса, записи пути исходного кода разделяются точками с запятой (;) и могут быть каталогами, JAR-архивами или ZIP-архивами. Если используются пакеты, имя локального пути в каталоге или архиве должно отражать имя пакета.

Обратите внимание, что классы, найденные через classpath, подлежат автоматической перекомпиляции, если найдены их источники.

25
ответ дан 27 November 2019 в 15:38
поделиться
  • Путь к исходному тексту - это место, где находится корень вашего кода для компиляции.
  • Путь к классам может содержать ваш код, а также необходимые библиотеки
10
ответ дан 27 November 2019 в 15:38
поделиться

CLASSPATH указывает компилятору и загрузчику классов, где искать нужные им файлы .class.

Sourcepath - это то, что я не так часто использую. Я считаю, что он необязателен, потому что обычно текущий каталог является sourcepath. CLASSPATH - нет.

5
ответ дан 27 November 2019 в 15:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: