[ 
https://issues.apache.org/jira/browse/JENA-1524?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16449644#comment-16449644
 ] 

ASF GitHub Bot commented on JENA-1524:
--------------------------------------

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/jigsaw/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


> org.apache.jena.system is split by org.apache.jena.arq and 
> org.apache.jena.core
> -------------------------------------------------------------------------------
>
>                 Key: JENA-1524
>                 URL: https://issues.apache.org/jira/browse/JENA-1524
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: Jena
>    Affects Versions: Jena 3.7.0
>            Reporter: Christopher Johnson
>            Priority: Major
>
> a JPMS module cannot require both org.apache.jena.arq and 
> org.apache.jena.core since org.apache.jena.system can be read from both.  
> This cannot be resolved with --patch-module since arq and core provide 
> different implementations.  Suggestion is to make a distinction by renaming 
> system to sys in either one.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to