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

Alan Bateman alanb at openjdk.org
Wed Oct 5 08:36:28 UTC 2022


On Tue, 4 Oct 2022 08:00:21 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.
>
> Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision:
> 
>   enhance test

test/langtools/tools/jdeps/optionalDependency/OptionalDependencyTest.java line 74:

> 72:     @Test
> 73:     public void optionalDependenceNotResolved() {
> 74:         JdepsRunner jdepsRunner = new JdepsRunner("--module-path", "m2.jar:m3.jar",

Just a heads-up that this test is failing in our CI because this needs to use File.pathSeparator rather than ":". Here's the exception:


test OptionalDependencyTest.optionalDependenceNotResolved(): failure
java.nio.file.InvalidPathException: Illegal char <:> at index 6: m2.jar:m3.jar
	at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
	at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
	at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
	at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
	at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:232)
	at java.base/java.nio.file.Path.of(Path.java:147)
	at java.base/java.nio.file.Paths.get(Paths.java:69)
	at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.createModulePathFinder(JdepsConfiguration.java:582)
	at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.appModulePath(JdepsConfiguration.java:473)
	at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.buildConfig(JdepsTask.java:584)
	at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:558)
	at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:534)
	at jdk.jdeps/com.sun.tools.jdeps.Main.run(Main.java:65)
	at jdk.jdeps/com.sun.tools.jdeps.Main$JDepsToolProvider.run(Main.java:78)
	at JdepsRunner.run(JdepsRunner.java:68)
	at OptionalDependencyTest.optionalDependenceNotResolved(OptionalDependencyTest.java:77)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
	at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:599)
	at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:174)
	at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
	at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:822)
	at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.testng.TestRunner.privateRun(TestRunner.java:764)
	at org.testng.TestRunner.run(TestRunner.java:585)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
	at org.testng.SuiteRunner.run(SuiteRunner.java:286)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
	at org.testng.TestNG.runSuites(TestNG.java:1069)
	at org.testng.TestNG.run(TestNG.java:1037)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:93)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:312)
	at java.base/java.lang.Thread.run(Thread.java:1588)

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

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


More information about the core-libs-dev mailing list