How to resolve module-info.java compile error in Jdk9/java-9

后端 未结 4 1277
傲寒
傲寒 2021-01-05 03:06

I am trying to run below code using jdk-9 but facing problem when compile using command

Command

 javac -d mods .\\module-info.java c         


        
相关标签:
4条回答
  • 2021-01-05 03:13

    Per the Jigsaw Issues List, a module name cannot end with a number. The purpose is to discourage authors from encoding version numbers in module names.

    0 讨论(0)
  • 2021-01-05 03:20

    JSR 376 is not final yet and there are several topics still under discussion. The latest proposal on the #VersionsInModuleNames topic is here:

    http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2017-March/000659.html

    0 讨论(0)
  • 2021-01-05 03:30

    As per JDK-8160181 it is not forbidden to use digits in module names, however they should not be related to versioning.

    Examples:

    • log4j - OK
    • java.compact3 - OK
    • guava19 - NOT OK - 19 is related to major guava version
    • module1 - OK IF 1 doesn't mean a version but one of many modules in a sample project (better name should be used in real projects)

    Since Lint can't figure out what the digit means it reports digits by default and you can suppress them in module file with:

    @SuppressWarnings("module") // 1 in module1 is module number, not version
    module module1 {
    ...
    }
    

    The comment is optional but explains "why" the warning was suppressed

    0 讨论(0)
  • 2021-01-05 03:34

    Seems like you are compiling with non-jigsaw jdk build here... here is the link were they are jigsaw

    With that compiler these same samples that you have compile just fine on my laptop.

    This is how java -version looks like for project jigsaw:

    java version "9-ea"
    Java(TM) SE Runtime Environment (build 9-ea+153-jigsaw-nightly-h6003-20170124)
    Java HotSpot(TM) 64-Bit Server VM (build 9-ea+153-jigsaw-nightly-h6003-20170124, mixed mode)
    

    EDIT It works with both jigsaw and non-jigsaw build. I have just tried it (build 149)

    EDIT2 So i've tried with jdk-9 build 153 and here is what I got:

    javac -d mods module-info.java Modules.java
    module-info.java:1: warning: [module] module name module1 should avoid terminal digits
    module module1 {
          ^
    1 warning
    

    removing the "1" and running the same command compiled OK and mods directory was created with both class files compiled just fine.

    0 讨论(0)
提交回复
热议问题