在命令行界面中编译应用程序时,有时会看到如下命令:

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/

    10-12 20:30