0

次のディレクトリ構造があります。

A.java
a
└── A.java

A.java:

import a.*;

class A {
    public static void main(String[] args) {
        System.out.println("Hello Human");
    }
}

a/A.java:

package a;
public class A {}

そして、コンパイルして実行します:

$ javac A.java && java A
Hello Human

しかし、削除するとa/A.java(ただし、フォルダーは保持しますa)、コンパイルできなくなります:

$ rm a/A.java 
$ javac A.java && java A
A.java:1: package a does not exist
import a.*;
^
1 error

なんで?

4

2 に答える 2

5

aパッケージは観察可能ではないと言うかもしれません:

次のいずれかの場合に限り、パッケージは監視可能です。

  • パッケージの宣言を含むコンパイル単位は監視可能です (§7.3)。

  • パッケージのサブパッケージは監視可能です。

ソース:パッケージの可観測性

于 2013-04-02T14:03:40.647 に答える