Arrow: ["Request"] Add support to JPMS/Java >= 9

Created on 13 Dec 2018  路  3Comments  路  Source: arrow-kt/arrow

What version are you currently using?
Any, including 0.8.1

What would you like to see?
It is not possible to use Arrow on an application/library running on the module path of Java >= 9. There are some minor problems (like not having module-info.java nor automatic name on the manifest) but the main one is related with arrow-annotations. It depends on kindedj, but also includes in its own sources this file, which is under the package io.kindedj. Therefore when adding arrow-annotations on the module-path, there package io.kindedj is declared in two jars, which is forbidden.

I didn't checked the sources of io.kindedj, but if io.kindedj.Hk is public, the solution could be as easy as to move hkjs.kt to another package.

help wanted noob friendly

Most helpful comment

I replied on this issue because I think it's relevant, considering the topic.

Despite #1546, when I compile with the latest snapshot (0.10.0-20190818.134003-13) of arrow-core-data, I have this error :
java.lang.module.ResolutionException: Modules arrow.core.data and arrow.annotations export package arrow to module X
Whenever I rebuild, the module changes, or it shows that error :
java.lang.module.ResolutionException: Module arrow.annotations contains package arrow, module arrow.core.data exports package arrow to arrow.annotations

I can't find any module-info, but I believe these errors occurs because, in the module descriptor of the library, the whole package arrow is exported. I looked in arrow-core-data and arrow-annotations, this export is meaningful, but not compatible with the module system.

All 3 comments

I thought Kotlin didn't allow Java 9. This seems like an easy fix as that file is just type aliases :)

Kotlin does not compile to Java 9 bytecode, but Kotlin programs run fine on the module path. Jetbrain has even modified Kotlin libraries to include a module name, so transition will be easier.

This plugin makes very easy to support both Java 8 and Java >= 9 on libraries and applications and has Kotlin examples.

I replied on this issue because I think it's relevant, considering the topic.

Despite #1546, when I compile with the latest snapshot (0.10.0-20190818.134003-13) of arrow-core-data, I have this error :
java.lang.module.ResolutionException: Modules arrow.core.data and arrow.annotations export package arrow to module X
Whenever I rebuild, the module changes, or it shows that error :
java.lang.module.ResolutionException: Module arrow.annotations contains package arrow, module arrow.core.data exports package arrow to arrow.annotations

I can't find any module-info, but I believe these errors occurs because, in the module descriptor of the library, the whole package arrow is exported. I looked in arrow-core-data and arrow-annotations, this export is meaningful, but not compatible with the module system.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

JLLeitschuh picture JLLeitschuh  路  4Comments

billwanjohi picture billwanjohi  路  5Comments

pakoito picture pakoito  路  4Comments

JorgeCastilloPrz picture JorgeCastilloPrz  路  3Comments

raulraja picture raulraja  路  4Comments