Я прочитал документацию 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
в обоих случаях.
Было бы замечательно, если кто-либо мог бы помочь мне выяснить специфические особенности этих опций.
-classpath classpath
Устанавливает путь пользовательского класса, переопределяя путь пользовательского класса в переменной окружения CLASSPATH. Если не указан ни CLASSPATH, ни -classpath, путь пользовательского класса состоит из текущего каталога.
Если опция -sourcepath не указана, путь пользовательского класса ищется в исходных файлах, а также в файлах классов.
-sourcepath sourcepath
Укажите путь к исходному коду для поиска определений классов или интерфейсов. Как и в случае с путем пользовательского класса, записи пути исходного кода разделяются точками с запятой (;) и могут быть каталогами, JAR-архивами или ZIP-архивами. Если используются пакеты, имя локального пути в каталоге или архиве должно отражать имя пакета.
Обратите внимание, что классы, найденные через classpath, подлежат автоматической перекомпиляции, если найдены их источники.
CLASSPATH указывает компилятору и загрузчику классов, где искать нужные им файлы .class.
Sourcepath - это то, что я не так часто использую. Я считаю, что он необязателен, потому что обычно текущий каталог является sourcepath. CLASSPATH - нет.