I am trying to run below code using jdk-9 but facing problem when compile using command
Command
javac -d mods .\module-info.java com\nirav\modi\Test.java
Error
.\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...");
}
}
package structure is like below
module1\module-info.java
module1\com\nirav\modi\Test.java
JDK Version
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)
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:
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:
removing the "1" and running the same command compiled OK and mods directory was created with both class files compiled just fine.
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.
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