我在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{}
然后它编译正常,文件夹结构也正确创建。
请告诉我为什么会这样?
答案 0 :(得分:3)
在原始代码中,您尚未声明任何类 - 因此不会成为任何类文件。如果没有类文件,可能编译器认为不需要为 创建的任何类文件创建 所必需的目录结构。
在实践中,我唯一一次看到没有类的Java源文件是用于包信息 - 如果包中没有类,这也没有意义,尽管如果运行javadoc可能它将为空包创建一个条目。如评论中所述,包注释最终将创建一个类文件,但它们必须位于package-info.java
中。例如:
// In package-info.java
@Deprecated
package foo;
编译将创建package-info.class
,并在必要时为其创建目录。