apache / apache/arrow-java

[Java] Adapt to Java 9/9+ automatic module system

未关闭
#379 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Type: enhancement
主要语言
Java
星标
94
派生
152
平均合并
3 天 16 小时
30 天内合并 PR
11

描述

In Java 9/9+, within following module-info.java definition the build will fail by error:

```Java

module my.app {
exports my.app;

requires arrow.memory.core;
requires arrow.memory.unsafe;
}
```

The error:
> java: the unnamed module reads package org.apache.arrow.memory from both arrow.memory.core and arrow.memory.unsafe

It seems that JPMS requires a package to be read from at most one individual module. Ref: http://openjdk.java.net/projects/jigsaw/spec/sotms/#the-module-path. If so what we may have to do is to conduct a code clean up for our maven modules to make sure we don't populate codes in the same package into different libraries.

Also, as a more standardized practice, it's might be an option to put entries with name **Automatic-Module-Name** into manifest files to tell automatic module system to generate predefined module names rather than parsing from jar file name. Ref: https://docs.oracle.com/javase/9/docs/api/java/lang/module/ModuleFinder.html#automatic-modules

Note that it's not a goal for this topic to migrate to Java 9/9+.

**Reporter**: [Hongze Zhang](https://issues.apache.org/jira/browse/ARROW-12905) / @zhztheplayer

**Note**: *This issue was originally created as [ARROW-12905](https://issues.apache.org/jira/browse/ARROW-12905). Please see the [migration documentation](https://github.com/apache/arrow/issues/14542) for further details.*

贡献指南

打开贡献指南

调研方向

Start with the module-info.java example and the Maven modules that provide org.apache.arrow.memory, then review the linked migration documentation and JPMS references. Check how packages are split between arrow.memory.core and arrow.memory.unsafe and how manifest files are produced. Done means the duplicate-package failure is addressed and automatic module names are defined where appropriate without migrating the project to Java 9+.

由索引模型根据 Issue 内容生成。

评估

技术栈
java
领域
build-system
Issue 类型
重构
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
需要澄清
新手友好度
20/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。