2016-08-07 2 views
3

При компиляции приложения в интерфейсе командной строки, я иногда вижу команду записать следующим образом «-d.»:Какова цель написания, казалось бы, самосправочные в интерфейсе командной строки

javac -d . HelloWorld.java 

Я понимаю, что:

  1. -d <directory> = Укажите, где разместить сгенерированные файлы класса
  2. . = текущую папку

Мой вопрос: какова цель написания -d .?

Кажется самореферентным и полностью избыточным/ненужным. Я бы ожидать, просто следующее, что к моему знанию имеет тот же эффект, и является менее многословным:

javac HelloWorld.java 

Есть ли что-то, что мне не хватает?

Я использовал symbolhound.com для поиска в Интернете для этой конкретной фразы, но не нашел никаких объяснений.

This page на сайте Oracle Java это делает, например:

 
javac -d . XorInputStream.java 
javac -d . XorOutputStream.java 
javac -d . XorSocket.java 
javac -d . XorServerSocket.java 
javac -d . XorServerSocketFactory.java 
javac -d . XorClientSocketFactory.java 
javac -d . Hello.java 
javac -d . HelloClient.java 
javac -d . HelloImpl.java 
+1

Вы попробовали 'man' или' help'? –

+1

* «Примечание: пример использования можно найти на этой странице» * Вместо того, чтобы просто связывать страницу, ** покажите ** примеры использования в этом вопросе. (Я сделал это для вас на этот раз.) –

ответ

5

КОГДА ИСТОЧНИК DIR НЕ СОВРЕМЕННОЕ DIR

Предположим, у вас есть Hello.java файл в /tmp/src

Когда вы находитесь в /tmp, компиляция с

javac -d . src/Hello.java 

помещает файл класса в текущего каталога, поэтому /tmp/Hello.class.

Без опции он переходит в тот же каталог, что и исходный файл, то есть /tmp/src/Hello.class.

MOREOVER есть разница, если упаковки. Компиляция кода

package Foo; 

public class Hello { 
    public static void main(String[] args) { 
    System.out.println("Hello, World"); 
} 

из /tmp/src каталога с опцией -d . создает подкаталог для пакета

/tmp/src 
├── Foo 
│   └── Hello.class 
└── Hello.java 

тогда javac Hello.java покидает файл класса в текущем каталоге

$ tree 
. 
└── Hello.java 

0 directories, 1 file 
$ javac Hello.java 
$ tree 
. 
├── Hello.class 
└── Hello.java 

0 directories, 2 files 

Нет животных был поврежден во время теста с javac 1.8.0_101.

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