我一直试图编写一个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发布于 2017-09-30 01:33:33
相反,应该工作的命令是:
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。
发布于 2018-05-06 22:10:35
当我试图向一个没有源代码的JAR文件中添加一个module-info.java时,我遇到了同样的问题。我必须添加一个空类bar.foo.Bogus并用
javac bar.foo/module-info.java bar.foo/bar/foo/Bogus.java你以后可以把假课去掉。
https://stackoverflow.com/questions/46498293
复制相似问题