java - Java 9 模块的目录布局

标签 java java-9 java-module module-info

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

相关文章:

java - 基于 GPS 数据的全局栅格

java - 有没有办法通过Vsphere SDK with Java获取Vmware ESX中每个vmware的驱动信息?

java - 为什么我的 Java 9 模块服务没有注册其实现?

jsf - 使用 JDK 17 通过 JSF/EL 访问 ZoneInfo 时出现 IllegalAccessException

Java While 循环不执行

java - 如何使 JLabel 的 setText 成为安全方法

java - 列出 jar 文件中的模块

java - Java 中 lambda () -> { } 的含义

java - JShell 可能从 double 到 float 的有损转换

java - 如何在Eclipse中使用模块化项目的.classpath?