为什么即使我已经采用了包语句,也没有创建文件夹结构?

时间:2017-11-29 11:10:30

标签: java

我在java中尝试了一个包概念。

我创建了一个只包含一个语句的`JSONObject jsonObject = JSONFactoryUtil.createJSONObject();` `jsonObject.put("name","varun")` `jsonObject.put("address",null)` 文件:

Test.java

使用以下命令编译文件时:

package pack1;

它编译得很好但不会创建javac -d . Test.java 文件,也不会创建名为.class的文件夹。

我不知道为什么。有人可以建议吗?

如果我将代码更改为:

pack1

使用命令

编译程序
package pack1;
class Test{}

然后它编译正常,文件夹结构也正确创建。

请告诉我为什么会这样?

1 个答案:

答案 0 :(得分:3)

在原始代码中,您尚未声明任何类 - 因此不会成为任何类文件。如果没有类文件,可能编译器认为不需要为 创建的任何类文件创建 所必需的目录结构。

在实践中,我唯一一次看到没有类的Java源文件是用于包信息 - 如果包中没有类,这也没有意义,尽管如果运行javadoc可能它将为空包创建一个条目。如评论中所述,包注释最终将创建一个类文件,但它们必须位于package-info.java中。例如:

// In package-info.java
@Deprecated
package foo;

编译将创建package-info.class,并在必要时为其创建目录。