【发布时间】:2023-04-01 13:06:02
【问题描述】:
我在学习Java包的过程中遇到了麻烦。
环境
- Java8 1.8.9_162
- Windows7
目录
我尝试创建 hoge.fuga 包(仅用于学习 Java)并将文件放置在如下目录中。
+ src/
- senario.java //import hoge.fuga.*
- senario.class
- Foo.java //package hoge.fuga
- Bar.java //package hoge.fuga
+ hoge/
+ fuga/
- Foo.class
- Bar.class
当我编译 Senario.java
案例:我使用import hoge.fuga.*; 导入
编译错误。
bad source file: .\Foo.java
file does not contain class Foo
Please remove or make sure it appears in the correct subdirectory of the source path.
在这种情况下,如果我从 src/ 中删除 Foo.java 和 Bar.java,源文件编译不会出错。
案例:我使用import hoge.fuga.Foo; import hoge.fuga.Bar; 导入
源文件编译没有错误。
我想知道为什么我使用通配符时编译器的行为会有所不同?
在我看来,只有当我使用通配符导入时,编译器才会检查 src/ 目录中的源代码。
这是否与 java 设置有关,例如 classpath 或 sth?
我认为这种情况很少见,但我只是想知道为什么只有在使用通配符时才会发生这种情况。
【问题讨论】:
-
你在
Foo.java中有public class Foo吗?
标签: java import compiler-errors package