首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决Jdk9 9/java-9中的模块info.java编译错误

如何解决Jdk9 9/java-9中的模块info.java编译错误
EN

Stack Overflow用户
提问于 2017-01-25 10:35:26
回答 4查看 6.1K关注 0票数 10

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

命令

代码语言:javascript
复制
 javac -d mods .\module-info.java com\nirav\modi\Test.java

误差

代码语言:javascript
复制
.\module-info.java:1: error: class, interface, or enum expected
module module1 { }
^
1 error

module-info.java

代码语言:javascript
复制
module module1 { 

}

Test.java

代码语言:javascript
复制
package com.nirav.modi;

class Test {

    public static void main(String args[]){

        System.out.println("Hello Modular...");

    }

}

包结构如下所示

代码语言:javascript
复制
module1\module-info.java
module1\com\nirav\modi\Test.java

JDK版本

代码语言:javascript
复制
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)
EN

回答 4

Stack Overflow用户

发布于 2017-01-25 18:44:33

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

票数 11
EN

Stack Overflow用户

发布于 2017-03-26 08:32:24

JSR 376还不是最终的,还有几个话题还在讨论中。关于#VersionsInModuleNames主题的最新建议如下:

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

票数 2
EN

Stack Overflow用户

发布于 2020-04-30 10:37:18

根据JDK-8160181,不禁止在模块名称中使用数字,但是它们不应该与版本控制相关。

示例:

  • log4j -好的
  • java.compact3 -好的
  • guava19 -不是OK - 19与主要的番石榴版本有关。
  • module1 -如果1并不意味着一个版本,而是示例项目中许多模块中的一个(更好的名称应该在实际项目中使用)

由于Lint无法确定数字的含义,默认情况下它会报告数字,因此您可以在模块文件中使用:

代码语言:javascript
复制
@SuppressWarnings("module") // 1 in module1 is module number, not version
module module1 {
...
}

这个注释是可选的,但是解释了为什么这个警告被抑制了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41849311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档