在命令行界面中编译应用程序时,有时会看到如下命令:
javac -d . HelloWorld.java
我明白那个:
-d <directory>
=指定将生成的类文件放置在哪里.
=当前文件夹我的问题是:编写
-d .
的目的是什么?似乎是自指的,完全是多余的/不必要的。我只希望以下内容,据我所知,它们具有相同的效果,并且不太冗长:
javac HelloWorld.java
有什么我想念的吗?
我已经使用symbolhound.com在网上搜索了该特定词组,但是找不到任何解释。
Oracle Java站点上的This page可以执行此操作,例如:
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。你好
javac -d。 HelloClient.java
javac -d。 HelloImpl.java
最佳答案
当源目录不是当前目录时
假设您在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进行测试的过程中,没有动物受伤。
关于java - 编写看似自指的“-d”的目的是什么。在命令行界面中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38811937/