我试图使用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 errormodule-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.javaJDK版本
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)发布于 2017-01-25 18:44:33
根据拼图问题清单,模块名不能以数字结尾。其目的是阻止作者在模块名中编码版本号。
发布于 2017-03-26 08:32:24
JSR 376还不是最终的,还有几个话题还在讨论中。关于#VersionsInModuleNames主题的最新建议如下:
http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2017-March/000659.html
发布于 2020-04-30 10:37:18
根据JDK-8160181,不禁止在模块名称中使用数字,但是它们不应该与版本控制相关。
示例:
由于Lint无法确定数字的含义,默认情况下它会报告数字,因此您可以在模块文件中使用:
@SuppressWarnings("module") // 1 in module1 is module number, not version
module module1 {
...
}这个注释是可选的,但是解释了为什么这个警告被抑制了。
https://stackoverflow.com/questions/41849311
复制相似问题