Javac --add-modules添加多个模块

问题描述 投票:2回答:1

我有一个非常简单的Java类

public class TestAnnotation {
    public static void main(String[] args) {
        System.out.println(javax.annotation.Generated.class.getName());
    }
}

正如预期的那样,这不能使用JDK 9进行编译

"c:\Program Files\Java\jdk-9.0.1\bin\javac.exe" TestAnnotation.java
TestAnnotation.java:3: error: package javax.annotation is not visible
                System.out.println(javax.annotation.Generated.class.getName());
                                        ^
  (package javax.annotation is declared in module java.xml.ws.annotation, which is not in the module graph)
1 error

忽略错误消息(并使用java.xml.ws而不是建议的java.xml.ws.annotation),我可以使用它来编译

"c:\Program Files\Java\jdk-9.0.1\bin\javac.exe" --add-modules java.xml.ws TestAnnotation.java

但是,查看the module graph模块java.xml.ws不依赖于模块java.xml.ws.annotation,它导出javax.annotation包。

怎么可能这编译(并运行,顺便说一句)?

java java-9 java-module
1个回答
2
投票

java.xml.ws确实依赖于java.xml.ws.annotationhttp://hg.openjdk.java.net/jdk/jdk/file/68c6f57c40d4/src/java.xml.ws/share/classes/module-info.java#l46

module java.xml.ws {
    requires java.desktop;
    requires java.logging;
    requires java.management;
    requires java.xml.ws.annotation;
    ...

我不知道为什么在这张照片中缺少这种依赖性。可能他们只想显示关键链接。

© www.soinside.com 2019 - 2024. All rights reserved.