微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在没有任何警告的情况下使用带有 `exports... to` 指令的 `javac` 模块进行编译?

如何解决如何在没有任何警告的情况下使用带有 `exports... to` 指令的 `javac` 模块进行编译?

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

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 modules/second $(find second -name *.java)

javac -p modules/second -d modules/first $(find first -name *.java)

javac -p modules/second:modules/first -d modules/main main/app/Main.java main/module-info.java

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。