Dmi*_*kiy 19 java netty java-9 java-module module-info
我的项目依赖于Netty Epoll传输.这是依赖:
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<version>${netty.version}</version>
<classifier>${epoll.os}</classifier>
</dependency>
Run Code Online (Sandbox Code Playgroud)
此依赖项的自动生成的模块名称为:
netty.transport.native.epoll
Run Code Online (Sandbox Code Playgroud)
由于native
关键字是在Java 9中保留的,我无法将此模块作为依赖项添加到我的项目中:
module core {
requires netty.transport.native.epoll;
}
Run Code Online (Sandbox Code Playgroud)
由于:
module not found: netty.transport.<error>
Run Code Online (Sandbox Code Playgroud)
此外,jar工具--describe-module
报告以下内容:
无法导出模块描述符:网状输送本地-epoll的-4.1.17.Final-快照Linux的x86_64.jar netty.transport.native.epoll:无效的模块名称:"天然"是不是Java标识符
有没有解决方法?(当然,除了"发布正确的网络工件").
编辑:
作为维护者的快速修复 - 您可以添加下一行来构建:
<manifestEntries>
<Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name>
</manifestEntries>
Run Code Online (Sandbox Code Playgroud)
Nam*_*man 10
那么,解决方案似乎是: -
重命名工件本身(可能不是所有业主首选)
要么
另一种可能的不间断地使用相同的工件名称与新的(不同的)模块名的方式可以是由包装META-INF/MANIFEST.MF与属性的工件自动-模块-名称支配的模块的名称被使用由模块描述符转换为自动模块时.
要么
工件所有者可以将模块声明添加module.info.java
到其JAR中.(这可能导致自下而上的缓慢迁移)
由于规范中规定的模块声明为:
模块声明引入了一个模块名称,可以在其他模块声明中使用它来表示模块之间的关系.模块名称由一个或多个由"."分隔的Java标识符(§3.8)组成.令牌.
在某些情况下,Internet域名可能不是有效的包名称.以下是处理这些情况的一些建议惯例:
如果域名包含连字符或标识符(第3.8节)中不允许的任何其他特殊字符,请将其转换为下划线.
如果任何生成的包名称组件是关键字(第3.9节),请在它们后面附加下划线.
如果任何生成的包名称组件以数字或任何其他不允许作为标识符的初始字符的字符开头,则在组件前面加上下划线.
int _; // is would throw an error on javac based out of JDK9
int _native; // works fine
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6923 次 |
最近记录: |