Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么即使我使用了包语句,也没有创建文件夹结构?_Java - Fatal编程技术网

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

Java 为什么即使我使用了包语句,也没有创建文件夹结构?,java,Java,我在用java尝试一个包概念 我创建了一个Test.java文件,其中只包含一条语句: package pack1; 当我使用以下命令编译文件时: javac -d . Test.java 它编译得很好,但不创建.class文件,也不创建名为pack1的文件夹 我不知道为什么。谁能推荐一下吗 如果我将代码更改为: package pack1; class Test{} 并使用该命令编译程序 javac -d . Test.java 然后,它编译得很好,文件夹结构也被正确创建 请告诉我为什

我在用java尝试一个包概念

我创建了一个
Test.java
文件,其中只包含一条语句:

package pack1;
当我使用以下命令编译文件时:

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

我不知道为什么。谁能推荐一下吗

如果我将代码更改为:

package pack1;
class Test{}
并使用该命令编译程序

javac -d . Test.java
然后,它编译得很好,文件夹结构也被正确创建


请告诉我为什么会发生这种情况?

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

实际上,我唯一一次看到Java源文件中没有类的时候是为了获取包信息——如果包中也没有类,这是毫无意义的,尽管运行javadoc可能会为空包创建一个条目。如注释中所述,包注释最终将创建一个类文件,但它们必须位于
package info.java
中。例如:

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

编译将创建
包信息.class
,必要时为其创建目录。

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

实际上,我唯一一次看到Java源文件中没有类的时候是为了获取包信息——如果包中也没有类,这是毫无意义的,尽管运行javadoc可能会为空包创建一个条目。如注释中所述,包注释最终将创建一个类文件,但它们必须位于
package info.java
中。例如:

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

编译将创建
包信息.class
,必要时为其创建目录。

包声明根本不足以编译为有效的
.class
文件…包声明根本不足以编译为有效的
.class
文件…您可以编译“package info.java”如果你有一些包级别的属性,javac将生成一个.class文件。@PeteKirkham:你这里指的是什么类型的“属性”?这似乎不仅仅发生在Javadoc注释上。你是说包注释吗?@PeteKirkham:现在已经编辑了注释的答案。你可以编译“package info.java”,如果你有一些包级别的属性,javac将生成一个.class文件。@PeteKirkham:你在这里指的是什么类型的“属性”?这似乎不仅仅发生在Javadoc注释上。你是说软件包注释吗?@PeteKirkham:我现在已经编辑了注释的答案。