As of version 4.1.2, the poi and poi-ooxml JARs (and possibly others) do not have an Automatic-Module-Name attribute in the MANIFEST.MF, making their use in modular Java 9+ applications unstable. I suggest adding attributes using the reverse-DNS naming convention.
This work is already under way (5.0.0 release)
This is fixed in 5.0.0 as far as I see. The following sample MANIFEST.MF file is currently produced as part of the release building Manifest-Version: 1.0 Ant-Version: Apache Ant 1.10.7 Created-By: 1.8.0_252-b09 (Oracle Corporation) Multi-Release: true Automatic-Module-Name: org.apache.poi.poi Built-By: jenkins Specification-Title: Apache POI Specification-Version: 5.0.0-SNAPSHOT Specification-Vendor: The Apache Software Foundation Implementation-Title: Apache POI Implementation-Version: 5.0.0-SNAPSHOT Implementation-Vendor-Id: org.apache.poi Implementation-Vendor: The Apache Software Foundation Please reopen if this is still a problem with that version, you can test pre-builds via https://ci-builds.apache.org/job/POI/job/POI-DSL-1.8/