Github user christopher-johnson commented on the issue:
https://github.com/apache/jena/pull/401
Compilation in JPMS requires a `module-info.java` and is distinct from
compiling in JDK 9+.
> What is the issue here? Does anything break?
A quick background of the use case might help here. I have been developing
JPMS support for the TrellisLDP project recently and have encountered several
blocking dependency issues resulting from `jena-osgi`, which is a [transitive
dependency
](https://github.com/apache/commons-rdf/blob/master/commons-rdf-jena/pom.xml#L68-L72)
resulting from `org.apache.commons.rdf.jena` that is a direct dependency of
the `org.trellisldp.app.triplestore` implementation. JPMS compilation is
strict and cannot resolve a class-containing package sourced from multiple
"parent modules" (even if the package is private).[1] A good question here
that you raise is what happens if a top level package contains no classes and
only exports subpackages. This requires further investigation and I do not
know whether this semi-split, semi-private package, multi-module configuration
works, but it is probably not advisable according to the requirements of the
[specification](http://openjdk.java.net/projects/jigs
aw/spec/reqs/#non-interference).
Regarding this PR, I am running tests now. BTW, for me, the shaded-guava
jar does not work. I do not know whether it is my IDE, JRE or the maven build
configuration. At any rate, I can run tests if I replace the shaded-guava with
a direct dependency. Also, `guava 21.0` does not work (without hacking) in a
JDK10 because it depends on `javax.annotation.Nullable`. (it seems that
`guava 24.1-jre` removes the problematic jsr-305 annotations).
There seems to be an initialization/lifecycle issue that can be seen when
running `TestFactoryRDF`. The first test to fail there is
`factoryRDF_triple_01` with this exception
`java.lang.ExceptionInInitializerError`.
also
`com.google.common.util.concurrent.ExecutionError:
java.lang.NoClassDefFoundError: Could not initialize class
org.apache.jena.riot.system.RiotLib` is reported.
The preceding tests pass. It could be my issue, though as an
initialization related, it could be a consequence of a the changes in this PR:
`java.lang.ExceptionInInitializerError` is also produced in a test runtime
use of `org.apache.jena.arq` by a `org.trellisldp.vocabulary` test:
```
java.lang.ExceptionInInitializerError
org.apache.jena.riot.RDFParserBuilder.buildFactoryRDF(RDFParserBuilder.java:597)
org.apache.jena.riot.RDFParserBuilder.build(RDFParserBuilder.java:569)
org.apache.jena.riot.RDFParserBuilder.parse(RDFParserBuilder.java:512)
org.trellisldp.vocabulary.AbstractVocabularyTest.getVocabulary(AbstractVocabularyTest.java:56)
org.trellisldp.vocabulary.AbstractVocabularyTest.testVocabulary(AbstractVocabularyTest.java:62)
```
[1]
https://stackoverflow.com/questions/40616739/java-9-overlapping-non-exported-packages
---