RFR: JDK-8293701: jdeps InverseDepsAnalyzer runs into NoSuchElementException: No value present

Matthias Baesken mbaesken at openjdk.org
Wed Sep 21 08:18:55 UTC 2022


On Fri, 16 Sep 2022 08:26:00 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:

> We noticed that with certain jar file input, jdeps runs into the following exception, this happens with jdk11, 17 and 20.
> 
> jdeps.exe --multi-release 11 --module-path . --inverse --package com.sap.nw.performance.supa.client test.jar
> 
> Inverse transitive dependences matching packages [com.sap.nw.performance.supa.client]
> Exception in thread "main" java.util.NoSuchElementException: No value present
>         at java.base/java.util.Optional.get(Optional.java:148)
>         at jdk.jdeps/com.sun.tools.jdeps.InverseDepsAnalyzer.lambda$inverseDependences$2(InverseDepsAnalyzer.java:150)
>         at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
>         at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
>         at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
>         at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
>         at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>         at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>         at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
> 
> So an additional  check might be a good idea.

Hi Alan, Mandy so far I unfortunately do not have the sources.

Here are as far as I can see the most important jars, with module descriptions.
I wondered about the com.sap.nw.performance.commons  requires - I did not notice and export for this one, looked a bit strange to me (this should have been in performance-commons.jar at least the authors told me so ...

supa_jdeps/SUPA/lib> jdk/images/jdk/bin/jar --file=supa-client.jar  --describe-module
com.sap.nw.performance.supa.client jar:file:///supa_jdeps/SUPA/lib/supa-client.jar!/module-info.class
exports com.sap.nw.performance.supa.automation
requires com.sap.nw.performance.commons transitive
requires com.sap.nw.performance.supa.api transitive
requires com.sap.nw.performance.supa.base transitive
requires java.base mandated
requires java.logging transitive
qualified exports com.sap.nw.performance.supa.automation.implementation to supa.tests
opens com.sap.nw.performance.supa.automation


supa_jdeps/SUPA/lib> jdk/images/jdk/bin/jar --file=supa-base.jar  --describe-module
com.sap.nw.performance.supa.base jar:file:///test/SUPA/lib/supa-base.jar!/module-info.class
exports com.sap.nw.performance.supa.base
exports com.sap.nw.performance.supa.base.command
exports com.sap.nw.performance.supa.base.config
exports com.sap.nw.performance.supa.base.cpuinfo
exports com.sap.nw.performance.supa.base.http
exports com.sap.nw.performance.supa.base.io
exports com.sap.nw.performance.supa.base.processinfo
exports com.sap.nw.performance.supa.base.processinfo.os
exports com.sap.nw.performance.supa.base.system
exports com.sap.nw.performance.supa.base.time
exports com.sap.nw.performance.supa.base.utils
exports com.sap.nw.performance.supa.base.utils.file
requires JNativeHook transitive
requires com.github.spotbugs.annotations static
requires com.google.common transitive
requires com.google.gson transitive
requires com.sap.nw.performance.commons transitive
requires com.sap.nw.performance.supa.api transitive
requires ecs transitive
requires java.base mandated
requires java.desktop transitive
requires java.net.http transitive
requires org.apache.commons.collections4 transitive
requires org.apache.commons.text transitive
requires org.apache.httpcomponents.httpclient transitive
requires org.apache.httpcomponents.httpcore transitive
requires org.apache.httpcomponents.httpmime transitive
qualified exports com.sap.nw.performance.supa.base.cpuinfo.os to supa.tests


supa_jdeps/SUPA/lib> jdk/images/jdk/bin/jar --file=supa-api.jar  --describe-module
com.sap.nw.performance.supa.api jar:file:///supa_jdeps/SUPA/lib/supa-api.jar!/module-info.class
exports com.sap.nw.performance.supa.api
exports com.sap.nw.performance.supa.api.config
exports com.sap.nw.performance.supa.api.manager.state
exports com.sap.nw.performance.supa.api.processinfo
exports com.sap.nw.performance.supa.api.processprofiler
requires com.sap.nw.performance.commons transitive
requires java.base mandated

supa_jdeps/SUPA/lib> jdk/images/jdk/bin/jar --file=performance-commons.jar  --describe-module
com.sap.nw.performance.commons jar:file:///supa_jdeps/SUPA/lib/performance-commons.jar!/module-info.class
exports com.sap.nw.performance.commons.command
exports com.sap.nw.performance.commons.config
exports com.sap.nw.performance.commons.exceptions
exports com.sap.nw.performance.commons.outlier
exports com.sap.nw.performance.commons.remote
exports com.sap.nw.performance.commons.remote.command
exports com.sap.nw.performance.commons.results
exports com.sap.nw.performance.commons.utils
exports com.sap.nw.performance.commons.utils.html
exports com.sap.nw.performance.commons.utils.http
exports com.sap.nw.performance.commons.utils.jdsr
exports com.sap.nw.performance.commons.utils.net
exports com.sap.nw.performance.commons.utils.path
exports com.sap.nw.performance.commons.utils.zip
exports com.sap.nw.performance.limits
exports com.sap.nw.performance.measrules
exports com.sap.nw.performance.measrules.rule
requires client.combined
requires com.github.spotbugs.annotations static
requires com.google.gson
requires commons.cli transitive
requires commons.configuration transitive
requires commons.lang transitive
requires java.base mandated
requires java.desktop
requires java.management
requires java.scripting
requires java.sql transitive
requires junit static
requires mustache.compiler
requires opencsv
requires org.apache.commons.io transitive
requires org.apache.commons.lang3
requires org.apache.commons.text
requires org.apache.derby.client static
requires org.apache.derby.engine static
requires org.apache.derby.tools static
requires org.objectweb.asm
requires org.objectweb.asm.commons
requires org.objectweb.asm.tree
requires org.objectweb.asm.tree.analysis
requires org.objectweb.asm.util
requires org.openjdk.nashorn
opens com.sap.nw.performance.measrules

-------------

PR: https://git.openjdk.org/jdk/pull/10300


More information about the core-libs-dev mailing list