[ 
https://issues.apache.org/jira/browse/MTOOLCHAINS-53?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Guillaume Nodet reassigned MTOOLCHAINS-53:
------------------------------------------

    Assignee: Guillaume Nodet

> NPE during display-discovered-jdk-toolchains goal
> -------------------------------------------------
>
>                 Key: MTOOLCHAINS-53
>                 URL: https://issues.apache.org/jira/browse/MTOOLCHAINS-53
>             Project: Maven Toolchains Plugin
>          Issue Type: Bug
>    Affects Versions: 3.2.0
>         Environment: Xubuntu 22.10 amd64
> 5.19.0-46-generic 
> Apache Maven 3.9.4
>            Reporter: Greg Chabala
>            Assignee: Guillaume Nodet
>            Priority: Major
>
> I should have tested sooner, been looking forward to MTOOLCHAINS-49 automatic 
> JDK discovery for toolchains without toolchains.xml.
> Testing the display-discovered-jdk-toolchains goal, no toolchains discovered, 
> but there's a warning with a NPE:
> {noformat}
> $ mvn 
> org.apache.maven.plugins:maven-toolchains-plugin:3.2.0:display-discovered-jdk-toolchains
> [INFO] Scanning for projects...
> [INFO] 
> [INFO] -----------------< org.chabala.example:example-blank 
> >------------------
> [INFO] Building example-blank 1.0.0-SNAPSHOT
> [INFO]   from pom.xml
> [INFO] --------------------------------[ jar 
> ]---------------------------------
> [INFO] 
> [INFO] --- toolchains:3.2.0:display-discovered-jdk-toolchains (default-cli) @ 
> example-blank ---
> [INFO] Found 3 possible jdks: [/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64, 
> /usr/lib/jvm/jdk1.5.0_22, /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64]
> [WARNING] Error discovering toolchains (enable debug level for more 
> information): java.lang.NullPointerException
> [INFO] Discovered 0 JDK toolchains:
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time:  0.382 s
> [INFO] Finished at: 2024-04-21T22:41:22-05:00
> [INFO] 
> ------------------------------------------------------------------------
> {noformat}
> This is a nearly empty example project. Running with debug, some interesting 
> stacktrace:
> {noformat}
> $ mvn -X 
> org.apache.maven.plugins:maven-toolchains-plugin:3.2.0:display-discovered-jdk-toolchains
> Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9)
> Maven home: /usr/local/apache-maven/apache-maven-3.9.4
> Java version: 1.8.0_292, vendor: AdoptOpenJDK, runtime: 
> /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre
> Default locale: en_US, platform encoding: UTF-8
> OS name: "linux", version: "5.19.0-46-generic", arch: "amd64", family: "unix"
> [DEBUG] Created new class realm maven.api
> [DEBUG] Importing foreign packages into class realm maven.api
> [DEBUG]   Imported: javax.annotation.* < plexus.core
> [DEBUG]   Imported: javax.annotation.security.* < plexus.core
> [DEBUG]   Imported: javax.inject.* < plexus.core
> [DEBUG]   Imported: org.apache.maven.* < plexus.core
> [DEBUG]   Imported: org.apache.maven.artifact < plexus.core
> [DEBUG]   Imported: org.apache.maven.classrealm < plexus.core
> [DEBUG]   Imported: org.apache.maven.cli < plexus.core
> [DEBUG]   Imported: org.apache.maven.configuration < plexus.core
> [DEBUG]   Imported: org.apache.maven.exception < plexus.core
> [DEBUG]   Imported: org.apache.maven.execution < plexus.core
> [DEBUG]   Imported: org.apache.maven.execution.scope < plexus.core
> [DEBUG]   Imported: org.apache.maven.graph < plexus.core
> [DEBUG]   Imported: org.apache.maven.lifecycle < plexus.core
> [DEBUG]   Imported: org.apache.maven.model < plexus.core
> [DEBUG]   Imported: org.apache.maven.monitor < plexus.core
> [DEBUG]   Imported: org.apache.maven.plugin < plexus.core
> [DEBUG]   Imported: org.apache.maven.profiles < plexus.core
> [DEBUG]   Imported: org.apache.maven.project < plexus.core
> [DEBUG]   Imported: org.apache.maven.reporting < plexus.core
> [DEBUG]   Imported: org.apache.maven.repository < plexus.core
> [DEBUG]   Imported: org.apache.maven.rtinfo < plexus.core
> [DEBUG]   Imported: org.apache.maven.settings < plexus.core
> [DEBUG]   Imported: org.apache.maven.toolchain < plexus.core
> [DEBUG]   Imported: org.apache.maven.usability < plexus.core
> [DEBUG]   Imported: org.apache.maven.wagon.* < plexus.core
> [DEBUG]   Imported: org.apache.maven.wagon.authentication < plexus.core
> [DEBUG]   Imported: org.apache.maven.wagon.authorization < plexus.core
> [DEBUG]   Imported: org.apache.maven.wagon.events < plexus.core
> [DEBUG]   Imported: org.apache.maven.wagon.observers < plexus.core
> [DEBUG]   Imported: org.apache.maven.wagon.proxy < plexus.core
> [DEBUG]   Imported: org.apache.maven.wagon.repository < plexus.core
> [DEBUG]   Imported: org.apache.maven.wagon.resource < plexus.core
> [DEBUG]   Imported: org.codehaus.classworlds < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.* < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.classworlds < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.component < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.configuration < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.container < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.context < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.lifecycle < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.logging < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.personality < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.util.xml.Xpp3Dom < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.util.xml.pull.XmlPullParser < 
> plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.util.xml.pull.XmlPullParserException 
> < plexus.core
> [DEBUG]   Imported: org.codehaus.plexus.util.xml.pull.XmlSerializer < 
> plexus.core
> [DEBUG]   Imported: org.eclipse.aether.* < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.artifact < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.collection < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.deployment < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.graph < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.impl < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.installation < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.internal.impl < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.metadata < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.repository < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.resolution < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.spi < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.transfer < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.util < plexus.core
> [DEBUG]   Imported: org.eclipse.aether.version < plexus.core
> [DEBUG]   Imported: org.fusesource.jansi.* < plexus.core
> [DEBUG]   Imported: org.slf4j.* < plexus.core
> [DEBUG]   Imported: org.slf4j.event.* < plexus.core
> [DEBUG]   Imported: org.slf4j.helpers.* < plexus.core
> [DEBUG]   Imported: org.slf4j.spi.* < plexus.core
> [DEBUG] Populating class realm maven.api
> [DEBUG] Created adapter factory; available factories [file-lock, 
> rwlock-local, semaphore-local, noop]; available name mappers [discriminating, 
> file-gav, file-hgav, file-static, gav, static]
> [INFO] Error stacktraces are turned on.
> [DEBUG] Message scheme: color
> [DEBUG] Message styles: debug info warning error success failure strong mojo 
> project
> [DEBUG] Reading global settings from 
> /usr/local/apache-maven/apache-maven-3.9.4/conf/settings.xml
> [DEBUG] Reading user settings from /home/gchabala/.m2/settings.xml
> [DEBUG] Reading global toolchains from 
> /usr/local/apache-maven/apache-maven-3.9.4/conf/toolchains.xml
> [DEBUG] Reading user toolchains from /home/gchabala/.m2/toolchains.xml
> [DEBUG] Using local repository at /home/gchabala/.m2/repository
> [DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for 
> /home/gchabala/.m2/repository
> [INFO] Scanning for projects...
> [DEBUG] Extension realms for project 
> org.chabala.example:example-blank:jar:1.0.0-SNAPSHOT: (none)
> [DEBUG] Looking up lifecycle mappings for packaging jar from 
> ClassRealm[plexus.core, parent: null]
> [DEBUG] Creating adapter using nameMapper 'gav' and factory 'rwlock-local'
> [DEBUG] === REACTOR BUILD PLAN 
> ================================================
> [DEBUG] Project: org.chabala.example:example-blank:jar:1.0.0-SNAPSHOT
> [DEBUG] Tasks:   
> [org.apache.maven.plugins:maven-toolchains-plugin:3.2.0:display-discovered-jdk-toolchains]
> [DEBUG] Style:   Aggregating
> [DEBUG] 
> =======================================================================
> [INFO] 
> [INFO] -----------------< org.chabala.example:example-blank 
> >------------------
> [INFO] Building example-blank 1.0.0-SNAPSHOT
> [INFO]   from pom.xml
> [INFO] --------------------------------[ jar 
> ]---------------------------------
> [DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean]
> [DEBUG] Lifecycle default -> [validate, initialize, generate-sources, 
> process-sources, generate-resources, process-resources, compile, 
> process-classes, generate-test-sources, process-test-sources, 
> generate-test-resources, process-test-resources, test-compile, 
> process-test-classes, test, prepare-package, package, pre-integration-test, 
> integration-test, post-integration-test, verify, install, deploy]
> [DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy]
> [DEBUG] === PROJECT BUILD PLAN 
> ================================================
> [DEBUG] Project:       org.chabala.example:example-blank:1.0.0-SNAPSHOT
> [DEBUG] Dependencies (collect): []
> [DEBUG] Dependencies (resolve): []
> [DEBUG] Repositories (dependencies): [central 
> (https://repo.maven.apache.org/maven2, default, releases)]
> [DEBUG] Repositories (plugins)     : [central 
> (https://repo.maven.apache.org/maven2, default, releases)]
> [DEBUG] 
> -----------------------------------------------------------------------
> [DEBUG] Goal:          
> org.apache.maven.plugins:maven-toolchains-plugin:3.2.0:display-discovered-jdk-toolchains
>  (default-cli)
> [DEBUG] Style:         Regular
> [DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
> <configuration>
>   <comparator 
> default-value="lts,current,env,version,vendor">${toolchain.jdk.comparator}</comparator>
> </configuration>
> [DEBUG] 
> =======================================================================
> [INFO] 
> [INFO] --- toolchains:3.2.0:display-discovered-jdk-toolchains (default-cli) @ 
> example-blank ---
> [DEBUG] Dependency collection stats {ConflictMarker.analyzeTime=607546, 
> ConflictMarker.markTime=420980, ConflictMarker.nodeCount=4, 
> ConflictIdSorter.graphTime=438409, ConflictIdSorter.topsortTime=322845, 
> ConflictIdSorter.conflictIdCount=4, ConflictIdSorter.conflictIdCycleCount=0, 
> ConflictResolver.totalTime=3050735, ConflictResolver.conflictItemCount=4, 
> DfDependencyCollector.collectTime=32679714, 
> DfDependencyCollector.transformTime=6608861}
> [DEBUG] org.apache.maven.plugins:maven-toolchains-plugin:jar:3.2.0
> [DEBUG]    org.codehaus.plexus:plexus-xml:jar:3.0.0:compile
> [DEBUG]    org.slf4j:slf4j-api:jar:1.7.36:compile
> [DEBUG]    javax.inject:javax.inject:jar:1:compile
> [DEBUG] Created new class realm 
> plugin>org.apache.maven.plugins:maven-toolchains-plugin:3.2.0
> [DEBUG] Importing foreign packages into class realm 
> plugin>org.apache.maven.plugins:maven-toolchains-plugin:3.2.0
> [DEBUG]   Imported:  < maven.api
> [DEBUG] Populating class realm 
> plugin>org.apache.maven.plugins:maven-toolchains-plugin:3.2.0
> [DEBUG]   Included: org.apache.maven.plugins:maven-toolchains-plugin:jar:3.2.0
> [DEBUG]   Included: org.codehaus.plexus:plexus-xml:jar:3.0.0
> [DEBUG] Loading mojo 
> org.apache.maven.plugins:maven-toolchains-plugin:3.2.0:display-discovered-jdk-toolchains
>  from plugin realm 
> ClassRealm[plugin>org.apache.maven.plugins:maven-toolchains-plugin:3.2.0, 
> parent: sun.misc.Launcher$AppClassLoader@7852e922]
> [DEBUG] Configuring mojo execution 
> 'org.apache.maven.plugins:maven-toolchains-plugin:3.2.0:display-discovered-jdk-toolchains:default-cli'
>  with basic configurator -->
> [DEBUG]   (f) comparator = lts,current,env,version,vendor
> [DEBUG] -- end configuration --
> [INFO] Found 3 possible jdks: [/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64, 
> /usr/lib/jvm/jdk1.5.0_22, /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64]
> [DEBUG] JDK toolchain discovered at /usr/lib/jvm/jdk1.5.0_22 will be ignored: 
> could not obtain java.version
> [WARNING] Error discovering toolchains: java.lang.NullPointerException
> java.lang.NullPointerException
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance 
> (NativeConstructorAccessorImpl.java:62)
>     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance 
> (DelegatingConstructorAccessorImpl.java:45)
>     at java.lang.reflect.Constructor.newInstance (Constructor.java:423)
>     at java.util.concurrent.ForkJoinTask.getThrowableException 
> (ForkJoinTask.java:598)
>     at java.util.concurrent.ForkJoinTask.reportException 
> (ForkJoinTask.java:677)
>     at java.util.concurrent.ForkJoinTask.invoke (ForkJoinTask.java:735)
>     at java.util.stream.Nodes.collect (Nodes.java:328)
>     at java.util.stream.ReferencePipeline.evaluateToNode 
> (ReferencePipeline.java:109)
>     at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:541)
>     at java.util.stream.SortedOps$OfRef.opEvaluateParallel 
> (SortedOps.java:157)
>     at java.util.stream.AbstractPipeline.opEvaluateParallelLazy 
> (AbstractPipeline.java:705)
>     at java.util.stream.AbstractPipeline.sourceSpliterator 
> (AbstractPipeline.java:432)
>     at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:233)
>     at java.util.stream.ReferencePipeline.collect (ReferencePipeline.java:566)
>     at 
> org.apache.maven.plugins.toolchain.jdk.ToolchainDiscoverer.discoverToolchains 
> (ToolchainDiscoverer.java:162)
>     at 
> org.apache.maven.plugins.toolchain.jdk.DisplayDiscoveredJdkToolchainsMojo.execute
>  (DisplayDiscoveredJdkToolchainsMojo.java:65)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:126)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:328)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:73)
>     at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
>  (SingleThreadedBuilder.java:53)
>     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
> (LifecycleStarter.java:118)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
>     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
>     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
>     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
>     at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:62)
>     at sun.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke (Method.java:498)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
> (Launcher.java:283)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.launch 
> (Launcher.java:226)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
> (Launcher.java:407)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:348)
> Caused by: java.lang.NullPointerException
>     at java.util.concurrent.ConcurrentHashMap.putVal 
> (ConcurrentHashMap.java:1011)
>     at java.util.concurrent.ConcurrentHashMap.put 
> (ConcurrentHashMap.java:1006)
>     at 
> org.apache.maven.plugins.toolchain.jdk.ToolchainDiscoverer.getToolchainModel 
> (ToolchainDiscoverer.java:241)
>     at 
> org.apache.maven.plugins.toolchain.jdk.ToolchainDiscoverer.lambda$discoverToolchains$6
>  (ToolchainDiscoverer.java:152)
>     at java.util.stream.ReferencePipeline$3$1.accept 
> (ReferencePipeline.java:193)
>     at java.util.HashMap$KeySpliterator.forEachRemaining (HashMap.java:1556)
>     at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:482)
>     at java.util.stream.AbstractPipeline.wrapAndCopyInto 
> (AbstractPipeline.java:472)
>     at java.util.stream.Nodes$CollectorTask.doLeaf (Nodes.java:2183)
>     at java.util.stream.Nodes$CollectorTask.doLeaf (Nodes.java:2149)
>     at java.util.stream.AbstractTask.compute (AbstractTask.java:327)
>     at java.util.concurrent.CountedCompleter.exec (CountedCompleter.java:731)
>     at java.util.concurrent.ForkJoinTask.doExec (ForkJoinTask.java:289)
>     at java.util.concurrent.ForkJoinPool$WorkQueue.runTask 
> (ForkJoinPool.java:1056)
>     at java.util.concurrent.ForkJoinPool.runWorker (ForkJoinPool.java:1692)
>     at java.util.concurrent.ForkJoinWorkerThread.run 
> (ForkJoinWorkerThread.java:175)
> [INFO] Discovered 0 JDK toolchains:
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] 
> ------------------------------------------------------------------------
> {noformat}
> So, trying to put a null jdk reference into a HashMap? 
> https://github.com/apache/maven-toolchains-plugin/blob/c5edd013b6d7180c8f0712e02abc61b50993f44a/src/main/java/org/apache/maven/plugins/toolchain/jdk/ToolchainDiscoverer.java#L237-L241



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to