java - 如何使用 `javac` 指令编译 `exports... to` 模块而不出现任何警告?

标签 java javac java-module java-platform-module-system

我有三个模块 - 一个主要模块和两个依赖项。所有模块都位于同一文件夹级别,并分别组织在文件夹 ./main./first./second 中。

第二模块只有一个类:

package characterz;

public class Freaker {

    public void freakOut() {
        System.err.println("ARGH!!!#$%@");
    }
}

...及其 module-info.java 文件是:

module second {
    exports characterz;
}

第一个模块只有一个类:

package characters;

public class Captain {

    public void payRespects() {
        System.out.println("Presses \"F\" ...");
    }

}

...及其 module-info.java 文件是:

module first {
    exports characters;
    requires transitive second;
}

main模块只有一个类:

package app;

import characters.Captain;
import characterz.Freaker;

public class Main {
    public static void main(String... argz) {
        Captain cap = new Captain();
        Freaker freak = new Freaker();
        cap.payRespects();
        freak.freakOut();
    }
}

...及其 module-info.java 文件是:

module main {
    requires first;
}

为了编译这三个模块,我执行以下命令序列:

javac -d 模块/第二 $(查找第二个 -name *.java)

javac -p 模块/第二个 -d 模块/第一个 $(查找第一个 -name *.java)

javac -p 模块/第二:模块/第一 -d 模块/main main/app/Main.java main/module-info.java

...并且编译得很好。为了确保一切正常,我们可以这样运行我们的程序: java -p 模块 -m main/app.Main

但是如果我尝试在 first 模块中使用 exports... to 指令:

module first {
    exports characters to main;
    requires transitive second;
}

...然后编译过程开始在编译第一个模块时向我发出警告,并显示以下消息:

first/module-info.java:2: warning: [module] module not found: main
    exports characters to main;
                          ^
1 warning

不过它仍然可以编译。然而,在使用 exports... to 指令编译模块时如何避免收到这些警告?

最佳答案

假设您已经这样组织您的项目:

.           // current working directoy
|-- src     // source code
|  |-- first
|  |-- second
|  |-- main
|-- modules // compiled stuff
   |-- first
   |-- second
   |-- main

然后你可以编译所有模块

javac -d modules --module first,second,main --module-source-path src

来自当前工作目录。
无需跳过几个环节。

关于java - 如何使用 `javac` 指令编译 `exports... to` 模块而不出现任何警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67795589/

相关文章:

java - 如何识别 IBM 大型机 zos DB2 上的远程 4 类 JDBC 工作负载

java - 无法解决 V3CommentListResponse 类/符号、YouTube 数据 API Java 示例问题

java - 生成非常大的 Java 代码

java - 使用新的 Java 模块系统加载服务提供程序时我还缺少什么?

maven - Java 11 Eclipse 找到自动模块,Maven 没有

相同目录中的 Java 模块和资源

java - 如何在 char 数组 Java 中找到一个字符后跟一个字符?

java - J2me Player,一个接一个播放MP3文件

tomcat - 导入 javax.servlet 失败

java - 将新类添加到现有 JAR 文件(包含源代码)