[
https://issues.apache.org/jira/browse/XMLBEANS-648?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17827576#comment-17827576
]
Rodrigo Merino commented on XMLBEANS-648:
-----------------------------------------
Attached Test678.java to showcase the issue.
This is how i used it (replace the ... placeholders with the proper folder
where the libs are located)
* Compile the class:
{{javac Test678.java --module-path=.../xmlbeans-5.2.0.jar
--add-modules=org.apache.xmlbeans}}
* Run as classpath:
{{java -cp .:.../xmlbeans-5.2.0.jar:.../log4j-api-2.23.1.jar Test678}}
(runs fine)
* Run as modulepath prior to this change:
{{java --module-path=.../xmlbeans-5.2.0.jar:.../log4j-api-2.23.1.jar -cp .
--add-modules=org.apache.xmlbeans Test678}}
(finishes with error)
* Run as modulepath with the change:
{{java
--module-path=.../build/libs/xmlbeans-5.2.1-SNAPSHOT.jar:.../log4j-api-2.23.1.jar
-cp . --add-modules=org.apache.xmlbeans Test678}}
(runs fine)
> Cannot resolve type for handle
> _XY_Q=lang|R=lang@http://www.w3.org/XML/1998/namespace when running on java 9+
> -------------------------------------------------------------------------------------------------------------
>
> Key: XMLBEANS-648
> URL: https://issues.apache.org/jira/browse/XMLBEANS-648
> Project: XMLBeans
> Issue Type: Bug
> Components: XmlObject
> Affects Versions: Version 5.2.0
> Reporter: Rodrigo Merino
> Priority: Major
> Labels: pull-request-available
> Attachments: Test678.java
>
>
> When {{XsbReader}} loads internal resources (i.e.:
> {{org/apache/xmlbeans/metadata/attribute/http_3A_2F_2Fwww_2Ew3_2Eorg_2FXML_2F1998_2Fnamespace/lang.xsb}})
> it ends up calling {{SchemaTypeLoaderImpl#typeSystemForComponent}}. There,
> {{_resourceLoader}} is null, and using the classloader it cannot find
> resources in packages not exported (declared in {{module-info.java}}).
> An alternative would be to have a {{_resourceLoader}} that attempts to load
> the resource with the anchorClass rather than with the classLoader, that way
> internal resources are visible from within the module.
> The stack of the error that is thrown is:
> {{{}Caused by: org.apache.xmlbeans.SchemaTypeLoaderException: Cannot resolve
> type for handle _XY_Q=lang|R=lang@http://www.w3.org/XML/1998/namespace
> (org.apache.xmlbeans.metadata.system.sXMLSCHEMA.schemad77felemtype) - code
> 13{}}}{{{}at
> org.apache.xmlbeans/org.apache.xmlbeans.impl.schema.XsbReader.readHandle(XsbReader.java:483){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.schema.XsbReader.readTypeRef(XsbReader.java:548){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.schema.XsbReader.loadAttribute(XsbReader.java:1282){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.schema.XsbReader.readAttributeData(XsbReader.java:1275){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.schema.XsbReader.finishLoadingType(XsbReader.java:902){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.resolveHandle(SchemaTypeSystemImpl.java:940){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.SchemaComponent$Ref.getComponent(SchemaComponent.java:111){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.SchemaType$Ref.get(SchemaType.java:1072){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.schema.SchemaPropertyImpl.getType(SchemaPropertyImpl.java:85){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.schema.SchemaTypeImpl.createElementType(SchemaTypeImpl.java:991){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.values.XmlObjectBase.create_element_user(XmlObjectBase.java:879){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.store.Xobj.getUser(Xobj.java:1597){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.store.Xobj.find_element_user(Xobj.java:1968){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.xb.xsdschema.impl.SchemaDocumentImpl.getSchema(SchemaDocumentImpl.java:38){}}}{{{}at
>
> org.apache.xmlbeans/org.apache.xmlbeans.impl.schema.SchemaTypeSystemCompiler.compile(SchemaTypeSystemCompiler.java:163){}}}{{{}...{}}}
>
> This works fine on java 8 because module access rules are not enforced by
> java in that version (jpms was introduced in java 9).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]