作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在命令行界面编译应用程序时,有时会看到这样写的命令:
javac -d . HelloWorld.java
我的理解是:
-d <directory>
= 指定放置生成的类文件的位置.
= 当前文件夹我的问题是:写-d .
的目的是什么? ?
这似乎是 self 参照,完全多余/不必要。我只希望以下内容,据我所知具有相同的效果并且不那么冗长:
javac HelloWorld.java
有什么我想念的吗?
我使用 symbolhound.com 在网上搜索这个特定的短语,但找不到任何解释。
This page在 Oracle Java 网站上,例如:
javac -d . XorInputStream.javajavac -d . XorOutputStream.javajavac -d . XorSocket.javajavac -d . XorServerSocket.javajavac -d . XorServerSocketFactory.javajavac -d . XorClientSocketFactory.javajavac -d . Hello.javajavac -d . HelloClient.javajavac -d . HelloImpl.java
最佳答案
当源目录不是当前目录时
假设你在/tmp/src
中有一个Hello.java
文件
当你在/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");
}
使用 -d .
选项从 /tmp/src
目录为包构建一个子目录
/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/
我是一名优秀的程序员,十分优秀!