如何在Jdk9 / java-9中解决module-info.java编译错误

我试图使用jdk-9在代码下运行,但在使用命令编译时遇到问题

命令

javac -d mods .\module-info.java com\nirav\modi\Test.java 

错误

 .\module-info.java:1: error: class, interface, or enum expected module module1 { } ^ 1 error 

module-info.java

 module module1 { } 

Test.java

 package com.nirav.modi; class Test { public static void main(String args[]){ System.out.println("Hello Modular..."); } } 

包结构如下

 module1\module-info.java module1\com\nirav\modi\Test.java 

JDK版本

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

根据拼图问题列表 ,模块名称不能以数字结尾。 目的是阻止作者在模块名称中编码版本号。

JSR 376尚未最终确定,有几个主题仍在讨论中。 关于#VersionsInModuleNames主题的最新提案如下:

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

好像你正在使用非拼图jdk构建这里编译……这里是链接,他们是拼图

使用该编译器,您可以在我的笔记本电脑上编译这些相同的样本。

这就是java -version对项目拼图的看法:

 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) 

编辑它适用于拼图和非拼图构建。 我刚尝试过(构建149)

EDIT2所以我尝试使用jdk-9 build 153,这是我得到的:

 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 

删除“1”并运行相同的命令编译确定和mods目录创建时,两个类文件编译得很好。