javac命令是否自动创建包声明中指定的目录?

时间:2014-08-04 10:22:23

标签: java javac

我在使用Java时总是使用IDE,所以我对javac命令的了解并不是很好。我想知道这个:java是否生成.class文件应该放在.java文件包声明中指定的目录?让我澄清一下,假设您在桌面上有一个简单的.java文件:

package com.deangrobler.test

public class Test {

    // ...

}

从桌面运行以下内容时:

  

javac Test.java

然后会自动创建com / deangrobler / test目录并将Test.class文件放在其中吗?

3 个答案:

答案 0 :(得分:9)

来自文档 - > http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html 请参阅选项部分。

-d目录

设置类文件的目标目录。该目录必须已存在; javac不会创建它。如果类是包的一部分,则javac将类文件放在反映包名的子目录中,根据需要创建目录。例如,如果指定-d C:\ myclasses并且该类名为com.mypackage.MyClass,则类文件名为C:\ myclasses \ com \ mypackage \ MyClass.class。 如果未指定-d,则javac会将每个类文件放在与生成它的源文件相同的目录中。

注意:-d指定的目录不会自动添加到用户类路径中。

答案 1 :(得分:1)

  

然后它会自动进入并创建com / deangrobler / test   目录并将Test.class文件放在其中?

否。即使您可以使用-d指定编辑后创建class文件的位置,但java也不会创建包结构你。

因此,除非您指定-d选项,否则编译器会将每个类文件放在与相应源文件所在的目录相同的目录中。

即使您指定了套餐名称,但您还没有创建该结构,也不要期望javac所有您需要手动完成的事情。

例如:

javac -d C:/tempFolder MyProgram.java//Will place .class file in to C:/tempFolder
//Only if C:/tempFolder is available

com
|
|---deangrobler
        |
        |-------test
                  |
                  |---Test.class//Places class file here after compilation
                   //Default place

答案 2 :(得分:1)

如果我们使用下面的命令,它将从当前目录创建包结构。

javac -d . YourClassName.java

如果我们想将您的类文件及其包放在其他文件夹中,请使用以下命令。

javac -d "d:/java_eg/" YourClassName.java

它将在java_eg驱动器内的D文件夹中创建包目录和类文件。