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

Mandy Chung mchung at openjdk.org
Wed Sep 21 18:09:14 UTC 2022


On Wed, 21 Sep 2022 14:38:50 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.
>
> One additional comment about the jdeps --help output 
> https://github.com/openjdk/jdk/blob/master/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps.properties#L139
> 
> 
> main.opt.I=\
> \  -I\n\
> \  --inverse                     Analyzes the dependences per other given options\n\
> \                                and then find all artifacts that directly\n\
> \                                and indirectly depend on the matching nodes.\n\
> \                                This is equivalent to the inverse of\n\
> \                                compile-time view analysis and print\n\
> \                                dependency summary.  This option must use\n\
> \                                with --require, --package or --regex option.
> 
> Should this be better  'This option must be used . . .' ?  And what about a sentence explaining what 'nodes' you are talking about ?
> 
> Btw is there some trace mode telling me more where exactly the jdeps tool fails in this particular case ?

@MBaesken I move the debugging discussion to the JBS issue (https://bugs.openjdk.org/browse/JDK-8293701).   We should resume this PR once the cause of the problem is understood.

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

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


More information about the core-libs-dev mailing list