我一直在尝试编写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
。