我一直在尝试编写一个 Java 9 模块,但无论我做什么,我都会收到错误消息“包为空或不存在”。我已经尝试在线搜索预期的目录布局,并尝试了我能想到的目录布局的所有变体,但没有任何效果。
例如,这是我尝试过的一种布局
bar.foo/module-info.java
module bar.foo {
exports bar.foo;
}
bar.foo/bar/foo/wtf.java
package bar.foo;
public class wtf {
}
但是,编译还是和往常一样报错。
> javac bar.foo/module-info.java
bar.foo/module-info.java:2: error: package is empty or does not exist: bar.foo
exports bar.foo;
^
1 error
最佳答案
应该工作的命令是:
javac bar.foo/module-info.java bar.foo/bar/foo/wtf.java
原因是,您正在尝试编译一个需要包存在的类,即 bar.foo
在您的情况下。但由于您尚未创建,编译器会抛出上述错误。
这与目录布局无关,而是编译器评估的.class
。提供您的其他类(bar.foo/bar/foo/wtf.java
)在该包中创建 wtf.class
,因此编译器将成功编译 module-info.class
也是。
关于java - Java 9 模块的目录布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498293/