首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法为Java 9中自动生成的模块名称派生模块描述符?

无法为Java 9中自动生成的模块名称派生模块描述符?
EN

Stack Overflow用户
提问于 2018-03-20 05:39:42
回答 1查看 0关注 0票数 0

我的项目取决于Netty Epoll传输。这是依赖关系:

代码语言:javascript
复制
<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-transport-native-epoll</artifactId>
    <version>${netty.version}</version>
    <classifier>${epoll.os}</classifier>
</dependency>

此依赖项的自动生成的模块名称是:

代码语言:javascript
复制
netty.transport.native.epoll

由于native关键字是在Java 9中保留的,因此我无法将此模块作为依赖项添加到我的项目中:

代码语言:javascript
复制
module core {
    requires netty.transport.native.epoll;
}

由于:

代码语言:javascript
复制
module not found: netty.transport.<error>

另外,jar工具--describe-module报告如下内容:

无法派生模块描述符:netty-transport-native-epoll-4.1.17.Final-SNAPSHOT-linux-x86_64.jar netty.transport.native.epoll:无效的模块名称:'native'不是Java标识符

有没有解决方法?

EN

Stack Overflow用户

发布于 2018-03-20 15:10:03

由于规范中定义的模块声明为:

模块声明引入了一个模块名称,可以在其他模块声明中使用它来表示模块之间的关系。模块名称由一个或多个由“。”分隔的Java标识符(§3.8)组成。令牌。

这些声明表明,

在某些情况下,Internet域名可能不是有效的软件包名称。以下是处理这些情况的一些建议惯例:

  • 如果域名包含连字符或标识符(§3.8)中不允许的任何其他特殊字符,请将其转换为下划线。
  • 如果任何生成的包名称组件是关键字(§3.9),则向它们附加下划线。
  • 如果任何生成的包名称组件以数字开头,或者任何其他字符不允许作为标识符的初始字符,则在该组件的前面加上下划线。

但请记住,Underscore是Java9中的一个关键字

在这里输入图像描述
在这里输入图像描述
代码语言:javascript
复制
int _;  // is would throw error on javac based out of JDK9
int _native; // works fine
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004276

复制
相关文章

相似问题

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