Testing the display-discovered-jdk-toolchains goal, no toolchains discovered, but there's a warning with a NPE:
$ 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] ------------------------------------------------------------------------
This is a nearly empty example project. Running with debug, some interesting stacktrace:
$ 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] ------------------------------------------------------------------------
Greg Chabala opened MTOOLCHAINS-53 and commented
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:
This is a nearly empty example project. Running with debug, some interesting stacktrace:
So, trying to put a null jdk reference into a HashMap?
maven-toolchains-plugin/src/main/java/org/apache/maven/plugins/toolchain/jdk/ToolchainDiscoverer.java
Lines 237 to 241 in c5edd01
Affects: 3.2.0
Remote Links: