Published 2013-12-01.
Last modified 2024-08-17.
Time to read: 4 minutes.
Coursier provides the easiest way to install the latest version of popular command-line tools for Scala, and can conveniently switch between versions of specific tools. If you prefer to install Scala separately, instead of using Coursier, skip this section.
The command-line programs managed by Coursier are:
ammonite
,
coursier
, scala
, scalac
,
Scala CLI,
sbt
,
sbtn
,
and scalafmt
.
Coursier also installs a command-line runner called cs
.
Installing Coursier
Following are improved installation instructions based on
get-coursier.io/
.
I installed Coursier on my WSL instance as follows.
$ curl -sfL \ "https://github.com/coursier/launchers/raw/master/cs-x86_64-pc-linux.gz" | \ gzip -d > ~/Downloads/cs $
$ chmod +x ~/Downloads/cs
$ ~/Downloads/cs setup -y Checking if a JVM is installed Found a JVM installed under /usr/lib/jvm/java-21-openjdk-amd64.
Checking if ~/.local/share/coursier/bin is in PATH Checking if the standard Scala applications are installed Installed ammonite Installed cs Installed coursier Installed scala Installed scalac Installed scala-cli Installed sbt Installed sbtn Installed scalafmt
The -y
argument for the Coursier installation routine caused the following to be added to my ~/.profile
:
# >>> coursier install directory >>> export PATH="$PATH:/home/mslinn/.local/share/coursier/bin" # <<< coursier install directory <<<
I use Linux, not Mac, so prefer to set environment variables in ~/.bashrc
instead of ~/.profile
.
Because of that, I moved the above code to ~/.bashrc
.
After installation, I updated the PATH
environment variable in the console I was using by reloading ~/.bashrc
:
$ source ~/.bashrc
Help Message
Coursier provides the cs
command-line program for managing its Scala-related programs.
The cs
help message is:
$ cs -h Usage: /home/mslinn/.local/share/coursier/bin/.cs.aux <COMMAND> Coursier is the Scala application and artifact manager. It can install Scala applications and setup your Scala development environment. It can also download and cache artifacts from the web.
Install application commands: install Install an application from its descriptor. list List all currently installed applications. setup Setup a machine for Scala development. uninstall Uninstall one or more applications. update Update one or more applications.
Application channel commands: channel Manage additional channels, used by coursier to resolve application descriptors. search Search application names from known channels.
Java commands: java Manage installed JVMs and run java. java-home Print the home directory of a particular JVM.
Launcher commands: bootstrap Create a binary launcher from a dependency or an application descriptor. launch Launch an application from a dependency or an application descriptor.
Resolution commands: fetch Transitively fetch the JARs of one or more dependencies or an application. resolve Resolve and print the transitive dependencies of one or more dependencies or an application.
Other commands: version Prints the coursier version
Launching Tools
One way of running Scala command-line tools is to use the cs launch
facility.
This command downloads, installs and runs a tool,
without making the downloaded version the default version.
For example, we can launch the most recent version of Scala 3 this way:
$ cs launch scala Welcome to Scala 3.4.2 (21.0.3, Java OpenJDK 64-Bit Server VM). Type in expressions for evaluation. Or try :help.
scala>
The following does exactly the same thing:
$ cs launch scala3 Welcome to Scala 3.4.2 (21.0.3, Java OpenJDK 64-Bit Server VM). Type in expressions for evaluation. Or try :help.
scala>
The above showed the results when Scala 3.4.2 was current. Four days after Scala 3.5.0 was released, problems manifested when running the identical commands.
I do not recommend you use either of the above commands. Forward compatibility for Scala is treated very casually by its developers. Scala 3.5.0 was released prematurely; that version removed the Scala runner that had been used for the previous 20 years. The replacement, Scala CLI, was not installed. The Scala REPL stopped working, as did Scala scripts.
$ cs install scala:3.5.0 scalac:3.5.0 Wrote scala Wrote scalac
$ scala -version [warning] MainGenericRunner class is deprecated since Scala 3.5.0, and Scala CLI features will not work. [warning] Please be sure to update to the Scala CLI launcher to use the new features. [warning] It appears that your Coursier-based Scala installation is misconfigured. [warning] To update to the new Scala CLI runner, please update (coursier, cs) commands first before re-installing scala. [warning] Check the Scala 3.5.0 release notes to troubleshoot your installation. Scala code runner version 3.5.0 -- Copyright 2002-2024, LAMP/EPFL
You must be more specific about the desired version when launching Scala. I will show you how in a moment.
Other tools have a history of being handled more professionally than scala
,
for example, sbt
and java
.
We can run the most recent version of sbt
.
Notice that the command is automagically downloaded if it is not already cached:
$ cs launch sbt https://repo1.maven.org/maven2/org/scala-sbt/sbt-launch/1.10.1/sbt-launch-1.10.1.pom 100.0% [##########] 2.5 KiB (33.1 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/sbt/sbt-runner/maven-metadata.xml 100.0% [##########] 367B (3.6 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/sbt/sbt-runner/0.2.0/sbt-runner-0.2.0.jar 100.0% [##########] 10.8 KiB (269.3 KiB / s) https://repo1.maven.org/maven2/org/scala-sbt/sbt-launch/1.10.1/sbt-launch-1.10.1.jar 100.0% [##########] 3.7 MiB (30.6 MiB / s) Jul 16, 2024 10:06:57 AM org.jline.utils.Log logr WARNING: Unable to create a system terminal, creating a dumb terminal (enable debug logging for more information) [warn] No sbt.version set in project/build.properties, base directory: /mnt/f/cadenzaHome/cadenzaSiteTemplate [info] welcome to sbt 1.10.1 (Ubuntu Java 21.0.3) [info] set current project to cadenzasitetemplate (in build file:/mnt/f/cadenzaHome/cadenzaSiteTemplate/) [info] sbt server started at local:///home/mslinn/.sbt/1.0/server/d20badc0a9ebaf447943/sock [info] started sbt server >....
Installing a Default Version
By default, Coursier installs the most recently published version of the command-line programs that it manages. More than one version of a tool can be cached. At the time of writing, this included Scala v3.4.2. You can install specific versions of the command-line programs managed by Coursier, including Scala.
This is how you can install the last version of Scala 2, v2.13.14, and make it the default version of Scala:
$ cs install scala:2.13.14 scalac:2.13.14 Wrote scala Wrote scalac
$ scala -version Scala code runner version 2.13.14 -- Copyright 2002-2021, LAMP/EPFL and Lightbend, Inc.
Now switch back to the Scala 3.4.2 and make it the default:
$ cs install scala:3.4.2 scalac:3.4.2 https://repo1.maven.org/maven2/org/scala-lang/scala3-compiler_3/maven-metadata.xml No new update since 2024-07-17 00:37:40 Wrote scala
$ scala -version Scala code runner version 3.4.2 -- Copyright 2002-2024, LAMP/EPFL
Once installed, you can run the default version of a tool, like scala
,
in the usual way without using cs install
:
$ scala Welcome to Scala 3.4.2 (21.0.3, Java OpenJDK 64-Bit Server VM). Type in expressions for evaluation. Or try :help.
scala>
You can install another version of a managed program and launch it without making it the default version:
$ cs launch scala:2.13.13 https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.13/scala-compiler-2.13.13.pom 100.0% [##########] 2.5 KiB (41.8 KiB / s) https://repo1.maven.org/maven2/org/jline/jline/3.24.1/jline-3.24.1.pom 100.0% [##########] 18.9 KiB (1.0 MiB / s) https://repo1.maven.org/maven2/org/jline/jline/3.24.1/jline-3.24.1.jar 100.0% [##########] 1.1 MiB (28.0 MiB / s) https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.13/scala-reflect-2.13.13.jar 100.0% [##########] 3.6 MiB (36.5 MiB / s) https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.13/scala-compiler-2.13.13.jar 100.0% [##########] 11.6 MiB (58.5 MiB / s) Welcome to Scala 2.13.13 (OpenJDK 64-Bit Server VM, Java 21.0.3). Type in expressions for evaluation. Or try :help.
scala>
Updating Coursier’s Managed Tools
The cs update
command
updates installed applications if newer versions are available.
You can update all Coursier managed applications like this:
$ cs update
You can update a specific application, for example, Scala:
$ cs update scala
Coursier Java
Java Help
The help message for the cs java
subcommand is:
$ cs java -h Usage: /home/mslinn/.local/share/coursier/bin/.cs.aux java [options] Manage installed JVMs and run java.
Examples: $ cs java --available $ cs java --installed $ cs java --jvm adopt:13.0-2 -version $ cs java --jvm 11 --env $ cs java --jvm adopt:11 --setup
Help options: --usage Print usage and exit -h, -help, --help Print help message and exit -help-full, -full-help, --help-full, --full-help Print help message, including hidden options, and exit
Verbosity options: -q, --quiet Quiet output -v, --verbose Increase verbosity (specify several times to increase more) -P, --progress Force display of progress bars
Java options: --available List all available JVMs --installed List all the installed JVMs --jvm string? The JVM you're targeting (e.g. --jvm temurin:1.17) --jvm-index string? Location of the JVM index that you'd like to use --architecture string?
Scripting options: --env Prints out a script that can be used to setup the env --setup Sets the default JVM to be used
Repository options: -r, --repository maven|sonatype:$repo|ivy2local|bintray:$org/$repo|bintray-ivy:$org/$repo|typesafe:ivy-$repo|typesafe:$repo|sbt-plugin:$repo|scala-integration|scala-nightlies|ivy:$pattern|jitpack|clojars|jcenter|apache:$repo Repository - for multiple repositories, specify this option multiple times (e.g. -r central -r ivy2local -r sonatype:snapshots)
Cache options: --cache string? Cache directory (defaults to environment variable COURSIER_CACHE, or ~/.cache/coursier/v1 on Linux and ~/Library/Caches/Coursier/v1 on Mac) -l, --ttl duration TTL duration (e.g. "24 hours") --credentials host(realm) user:pass|host user:pass Credentials to be used when fetching metadata or artifacts. Specify multiple times to pass multiple credentials. Alternatively, use the COURSIER_CREDENTIALS environment variable --credential-file string* Path to credential files to read credentials from
Listing Available JVMs
I counted 1555 versions of Java available from Coursier:
$ cs java --available adopt:1.8.0-181 adopt:1.8.0-192 adopt:1.8.0-202 adopt:1.8.0-212 adopt:1.8.0-222 adopt:1.8.0-232 adopt:1.8.0-242 adopt:1.8.0-252 adopt:1.8.0-262 adopt:1.8.0-265 adopt:1.8.0-272 adopt:1.8.0-275 adopt:1.8.0-282 adopt:1.8.0-292 adopt:1.9 adopt:1.9.0.4 adopt:1.10.0.2 adopt:1.11 adopt:1.11.0.1 adopt:1.11.0.2 adopt:1.11.0.3 adopt:1.11.0.4 adopt:1.11.0.5 adopt:1.11.0.6 adopt:1.11.0.7 adopt:1.11.0.8 adopt:1.11.0.9 adopt:1.11.0.9.1 adopt:1.11.0.10 adopt:1.11.0.11 adopt:1.12 adopt:1.12.0.1 adopt:1.12.0.2 adopt:1.13 adopt:1.13.0.1 adopt:1.13.0.2 adopt:1.14 adopt:1.14.0.1 adopt:1.14.0.2 adopt:1.15 adopt:1.15.0.1 adopt:1.15.0.2 adopt:1.16 adopt:1.16.0.1 adopt-debugimage:1.8.0-292 adopt-debugimage:1.11.0.11 adopt-debugimage:1.16 adopt-debugimage:1.16.0.1 adopt-jre:1.8.0-181 adopt-jre:1.8.0-192 adopt-jre:1.8.0-202 adopt-jre:1.8.0-212 adopt-jre:1.8.0-222 adopt-jre:1.8.0-232 adopt-jre:1.8.0-242 adopt-jre:1.8.0-252 adopt-jre:1.8.0-262 adopt-jre:1.8.0-265 adopt-jre:1.8.0-272 adopt-jre:1.8.0-275 adopt-jre:1.8.0-282 adopt-jre:1.8.0-292 adopt-jre:1.9 adopt-jre:1.9.0.4 adopt-jre:1.10.0.2 adopt-jre:1.11 adopt-jre:1.11.0.2 adopt-jre:1.11.0.3 adopt-jre:1.11.0.4 adopt-jre:1.11.0.5 adopt-jre:1.11.0.6 adopt-jre:1.11.0.7 adopt-jre:1.11.0.8 adopt-jre:1.11.0.9 adopt-jre:1.11.0.9.1 adopt-jre:1.11.0.10 adopt-jre:1.11.0.11 adopt-jre:1.12 adopt-jre:1.12.0.1 adopt-jre:1.12.0.2 adopt-jre:1.13 adopt-jre:1.13.0.1 adopt-jre:1.13.0.2 adopt-jre:1.14 adopt-jre:1.14.0.1 adopt-jre:1.14.0.2 adopt-jre:1.15 adopt-jre:1.15.0.1 adopt-jre:1.15.0.2 adopt-jre:1.16 adopt-jre:1.16.0.1 adopt-testimage:1.11.0.5 adopt-testimage:1.11.0.6 adopt-testimage:1.11.0.7 adopt-testimage:1.11.0.8 adopt-testimage:1.11.0.9 adopt-testimage:1.11.0.9.1 adopt-testimage:1.11.0.10 adopt-testimage:1.11.0.11 adopt-testimage:1.13 adopt-testimage:1.13.0.1 adopt-testimage:1.13.0.2 adopt-testimage:1.14 adopt-testimage:1.14.0.1 adopt-testimage:1.14.0.2 adopt-testimage:1.15 adopt-testimage:1.15.0.1 adopt-testimage:1.15.0.2 adopt-testimage:1.16 adopt-testimage:1.16.0.1 adoptium:1.8.0-302 adoptium:1.8.0-312 adoptium:1.8.0-322 adoptium:1.8.0-332 adoptium:1.8.0-342 adoptium:1.8.0-345 adoptium:1.8.0-352 adoptium:1.8.0-362 adoptium:1.8.0-372 adoptium:1.8.0-382 adoptium:1.8.0-392 adoptium:1.8.0-402 adoptium:1.8.0-412 adoptium:1.8.0-422 adoptium:1.9 adoptium:1.9.0.4 adoptium:1.10.0.2 adoptium:1.11.0.12 adoptium:1.11.0.13 adoptium:1.11.0.14 adoptium:1.11.0.14.1 adoptium:1.11.0.15 adoptium:1.11.0.16 adoptium:1.11.0.16.1 adoptium:1.11.0.17 adoptium:1.11.0.18 adoptium:1.11.0.19 adoptium:1.11.0.20 adoptium:1.11.0.20.1 adoptium:1.11.0.21 adoptium:1.11.0.22 adoptium:1.11.0.23 adoptium:1.11.0.24 adoptium:1.12 adoptium:1.12.0.1 adoptium:1.12.0.2 adoptium:1.13 adoptium:1.13.0.1 adoptium:1.13.0.2 adoptium:1.14 adoptium:1.14.0.1 adoptium:1.14.0.2 adoptium:1.15 adoptium:1.15.0.1 adoptium:1.15.0.2 adoptium:1.16.0.2 adoptium:1.17 adoptium:1.17.0.1 adoptium:1.17.0.2 adoptium:1.17.0.3 adoptium:1.17.0.4 adoptium:1.17.0.4.1 adoptium:1.17.0.5 adoptium:1.17.0.6 adoptium:1.17.0.7 adoptium:1.17.0.8 adoptium:1.17.0.8.1 adoptium:1.17.0.9 adoptium:1.17.0.10 adoptium:1.17.0.11 adoptium:1.17.0.12 adoptium:1.18 adoptium:1.18.0.1 adoptium:1.18.0.2 adoptium:1.18.0.2.1 adoptium:1.19 adoptium:1.19.0.1 adoptium:1.19.0.2 adoptium:1.20 adoptium:1.20.0.1 adoptium:1.20.0.2 adoptium:1.21 adoptium:1.21.0.1 adoptium:1.21.0.2 adoptium:1.21.0.3 adoptium:1.21.0.4 adoptium-debugimage:1.8.0-302 adoptium-debugimage:1.8.0-312 adoptium-debugimage:1.8.0-322 adoptium-debugimage:1.8.0-332 adoptium-debugimage:1.8.0-342 adoptium-debugimage:1.8.0-345 adoptium-debugimage:1.8.0-352 adoptium-debugimage:1.8.0-362 adoptium-debugimage:1.8.0-372 adoptium-debugimage:1.8.0-382 adoptium-debugimage:1.8.0-392 adoptium-debugimage:1.8.0-402 adoptium-debugimage:1.8.0-412 adoptium-debugimage:1.8.0-422 adoptium-debugimage:1.11.0.12 adoptium-debugimage:1.11.0.13 adoptium-debugimage:1.11.0.14 adoptium-debugimage:1.11.0.14.1 adoptium-debugimage:1.11.0.15 adoptium-debugimage:1.11.0.16 adoptium-debugimage:1.11.0.16.1 adoptium-debugimage:1.11.0.17 adoptium-debugimage:1.11.0.18 adoptium-debugimage:1.11.0.19 adoptium-debugimage:1.11.0.20 adoptium-debugimage:1.11.0.20.1 adoptium-debugimage:1.11.0.21 adoptium-debugimage:1.11.0.22 adoptium-debugimage:1.11.0.23 adoptium-debugimage:1.11.0.24 adoptium-debugimage:1.16.0.2 adoptium-debugimage:1.17 adoptium-debugimage:1.17.0.1 adoptium-debugimage:1.17.0.2 adoptium-debugimage:1.17.0.3 adoptium-debugimage:1.17.0.4 adoptium-debugimage:1.17.0.4.1 adoptium-debugimage:1.17.0.5 adoptium-debugimage:1.17.0.6 adoptium-debugimage:1.17.0.7 adoptium-debugimage:1.17.0.8 adoptium-debugimage:1.17.0.8.1 adoptium-debugimage:1.17.0.9 adoptium-debugimage:1.17.0.10 adoptium-debugimage:1.17.0.11 adoptium-debugimage:1.17.0.12 adoptium-debugimage:1.18 adoptium-debugimage:1.18.0.1 adoptium-debugimage:1.18.0.2 adoptium-debugimage:1.18.0.2.1 adoptium-debugimage:1.19 adoptium-debugimage:1.19.0.1 adoptium-debugimage:1.19.0.2 adoptium-debugimage:1.20 adoptium-debugimage:1.20.0.1 adoptium-debugimage:1.20.0.2 adoptium-debugimage:1.21 adoptium-debugimage:1.21.0.1 adoptium-debugimage:1.21.0.2 adoptium-debugimage:1.21.0.3 adoptium-debugimage:1.21.0.4 adoptium-jre:1.8.0-302 adoptium-jre:1.8.0-312 adoptium-jre:1.8.0-322 adoptium-jre:1.8.0-332 adoptium-jre:1.8.0-342 adoptium-jre:1.8.0-345 adoptium-jre:1.8.0-352 adoptium-jre:1.8.0-362 adoptium-jre:1.8.0-372 adoptium-jre:1.8.0-382 adoptium-jre:1.8.0-392 adoptium-jre:1.8.0-402 adoptium-jre:1.8.0-412 adoptium-jre:1.8.0-422 adoptium-jre:1.9 adoptium-jre:1.9.0.4 adoptium-jre:1.10.0.2 adoptium-jre:1.11.0.12 adoptium-jre:1.11.0.13 adoptium-jre:1.11.0.14 adoptium-jre:1.11.0.14.1 adoptium-jre:1.11.0.15 adoptium-jre:1.11.0.16 adoptium-jre:1.11.0.16.1 adoptium-jre:1.11.0.17 adoptium-jre:1.11.0.18 adoptium-jre:1.11.0.19 adoptium-jre:1.11.0.20 adoptium-jre:1.11.0.20.1 adoptium-jre:1.11.0.21 adoptium-jre:1.11.0.22 adoptium-jre:1.11.0.23 adoptium-jre:1.11.0.24 adoptium-jre:1.12 adoptium-jre:1.12.0.1 adoptium-jre:1.12.0.2 adoptium-jre:1.13 adoptium-jre:1.13.0.1 adoptium-jre:1.13.0.2 adoptium-jre:1.14 adoptium-jre:1.14.0.1 adoptium-jre:1.14.0.2 adoptium-jre:1.15 adoptium-jre:1.15.0.1 adoptium-jre:1.15.0.2 adoptium-jre:1.17.0.1 adoptium-jre:1.17.0.2 adoptium-jre:1.17.0.3 adoptium-jre:1.17.0.4 adoptium-jre:1.17.0.4.1 adoptium-jre:1.17.0.5 adoptium-jre:1.17.0.6 adoptium-jre:1.17.0.7 adoptium-jre:1.17.0.8 adoptium-jre:1.17.0.8.1 adoptium-jre:1.17.0.9 adoptium-jre:1.17.0.10 adoptium-jre:1.17.0.11 adoptium-jre:1.17.0.12 adoptium-jre:1.18.0.1 adoptium-jre:1.18.0.2 adoptium-jre:1.18.0.2.1 adoptium-jre:1.19 adoptium-jre:1.19.0.1 adoptium-jre:1.19.0.2 adoptium-jre:1.20 adoptium-jre:1.20.0.1 adoptium-jre:1.20.0.2 adoptium-jre:1.21 adoptium-jre:1.21.0.1 adoptium-jre:1.21.0.2 adoptium-jre:1.21.0.3 adoptium-jre:1.21.0.4 adoptium-testimage:1.11.0.12 adoptium-testimage:1.11.0.13 adoptium-testimage:1.11.0.18 adoptium-testimage:1.11.0.20 adoptium-testimage:1.11.0.20.1 adoptium-testimage:1.11.0.21 adoptium-testimage:1.11.0.22 adoptium-testimage:1.11.0.23 adoptium-testimage:1.11.0.24 adoptium-testimage:1.13 adoptium-testimage:1.13.0.1 adoptium-testimage:1.13.0.2 adoptium-testimage:1.14 adoptium-testimage:1.14.0.1 adoptium-testimage:1.14.0.2 adoptium-testimage:1.15 adoptium-testimage:1.15.0.1 adoptium-testimage:1.15.0.2 adoptium-testimage:1.16.0.2 adoptium-testimage:1.17 adoptium-testimage:1.17.0.6 adoptium-testimage:1.17.0.8 adoptium-testimage:1.17.0.8.1 adoptium-testimage:1.17.0.9 adoptium-testimage:1.17.0.10 adoptium-testimage:1.17.0.11 adoptium-testimage:1.17.0.12 adoptium-testimage:1.19.0.2 adoptium-testimage:1.20 adoptium-testimage:1.20.0.2 adoptium-testimage:1.21 adoptium-testimage:1.21.0.1 adoptium-testimage:1.21.0.2 adoptium-testimage:1.21.0.3 adoptium-testimage:1.21.0.4 corretto:8.222.10.1 corretto:8.232.09.1 corretto:8.242.07.1 corretto:8.242.08.1 corretto:8.252.09.1 corretto:8.262.10.1 corretto:8.265.01.1 corretto:8.272.10.1 corretto:8.272.10.3 corretto:8.275.01.1 corretto:8.282.08.1 corretto:8.292.10.1 corretto:8.302.08.1 corretto:8.312.07.1 corretto:8.322.06.1 corretto:8.322.06.2 corretto:8.332.08.1 corretto:8.342.07.1 corretto:8.342.07.3 corretto:8.342.07.4 corretto:8.352.08.1 corretto:8.362.08.1 corretto:8.372.07.1 corretto:8.382.05.1 corretto:8.392.08.1 corretto:8.402.06.1 corretto:8.402.08.1 corretto:8.412.08.1 corretto:8.422.05.1 corretto:11.0.4.11.1 corretto:11.0.5.10.1 corretto:11.0.6.10.1 corretto:11.0.7.10.1 corretto:11.0.8.10.1 corretto:11.0.9.11.1 corretto:11.0.9.12.1 corretto:11.0.10.9.1 corretto:11.0.11.9.1 corretto:11.0.12.7.1 corretto:11.0.13.8.1 corretto:11.0.14.9.1 corretto:11.0.14.10.1 corretto:11.0.15.9.1 corretto:11.0.16.8.1 corretto:11.0.16.9.1 corretto:11.0.17.8.1 corretto:11.0.18.10.1 corretto:11.0.19.7.1 corretto:11.0.20.8.1 corretto:11.0.20.9.1 corretto:11.0.21.9.1 corretto:11.0.22.7.1 corretto:11.0.23.9.1 corretto:11.0.24.8.1 corretto:17.0.0.35.1 corretto:17.0.1.12.1 corretto:17.0.2.8.1 corretto:17.0.3.6.1 corretto:17.0.4.8.1 corretto:17.0.4.9.1 corretto:17.0.5.8.1 corretto:17.0.6.10.1 corretto:17.0.7.7.1 corretto:17.0.8.7.1 corretto:17.0.8.8.1 corretto:17.0.9.8.1 corretto:17.0.10.7.1 corretto:17.0.10.8.1 corretto:17.0.11.9.1 corretto:17.0.12.7.1 corretto:18.0.0.37.1 corretto:18.0.1.10.1 corretto:18.0.2.9.1 corretto:19.0.0.36.1 corretto:19.0.1.10.1 corretto:19.0.2.7.1 corretto:20.0.0.36.1 corretto:20.0.1.9.1 corretto:20.0.2.9.1 corretto:20.0.2.10.1 corretto:21.0.0.35.1 corretto:21.0.1.12.1 corretto:21.0.2.13.1 corretto:21.0.2.14.1 corretto:21.0.3.9.1 corretto:21.0.4.7.1 graalvm:19.3.0 graalvm:19.3.0.2 graalvm:19.3.1 graalvm:19.3.2 graalvm:19.3.3 graalvm:19.3.4 graalvm:19.3.5 graalvm:19.3.6 graalvm:20.0.0 graalvm:20.1.0 graalvm:20.2.0 graalvm:20.3.0 graalvm:20.3.1 graalvm:20.3.1.2 graalvm:20.3.2 graalvm:20.3.3 graalvm:21.0.0 graalvm:21.0.0.2 graalvm:21.1.0 graalvm:21.2.0 graalvm:21.3.1 graalvm-community:17.0.7 graalvm-community:17.0.8 graalvm-community:17.0.9 graalvm-community:20.0.1 graalvm-community:20.0.2 graalvm-community:21.0.0 graalvm-community:21.0.1 graalvm-community:21.0.2 graalvm-community:22.0.0 graalvm-community:22.0.1 graalvm-community:22.0.2 graalvm-java11:19.3.0 graalvm-java11:19.3.0.2 graalvm-java11:19.3.1 graalvm-java11:19.3.2 graalvm-java11:19.3.3 graalvm-java11:19.3.4 graalvm-java11:19.3.5 graalvm-java11:19.3.6 graalvm-java11:20.0.0 graalvm-java11:20.1.0 graalvm-java11:20.2.0 graalvm-java11:20.3.0 graalvm-java11:20.3.1 graalvm-java11:20.3.1.2 graalvm-java11:20.3.2 graalvm-java11:20.3.3 graalvm-java11:20.3.4 graalvm-java11:20.3.5 graalvm-java11:20.3.6 graalvm-java11:21.0.0 graalvm-java11:21.0.0.2 graalvm-java11:21.1.0 graalvm-java11:21.2.0 graalvm-java11:21.3.0 graalvm-java11:21.3.1 graalvm-java11:21.3.2 graalvm-java11:21.3.3 graalvm-java11:21.3.3.1 graalvm-java11:22.0.0.2 graalvm-java11:22.1.0 graalvm-java11:22.2.0 graalvm-java11:22.3.0 graalvm-java11:22.3.1 graalvm-java11:22.3.2 graalvm-java11:22.3.3 graalvm-java16:21.1.0 graalvm-java16:21.2.0 graalvm-java17:17.0.7 graalvm-java17:17.0.8 graalvm-java17:17.0.9 graalvm-java17:21.3.0 graalvm-java17:21.3.1 graalvm-java17:21.3.2 graalvm-java17:21.3.3 graalvm-java17:21.3.3.1 graalvm-java17:22.0.0.2 graalvm-java17:22.1.0 graalvm-java17:22.2.0 graalvm-java17:22.3.0 graalvm-java17:22.3.1 graalvm-java17:22.3.2 graalvm-java17:22.3.3 graalvm-java19:22.3.0 graalvm-java19:22.3.1 graalvm-java20:20.0.1 graalvm-java20:20.0.2 graalvm-java21:21.0.0 graalvm-java21:21.0.1 graalvm-java21:21.0.2 graalvm-java22:22.0.0 graalvm-java22:22.0.1 graalvm-java22:22.0.2 graalvm-oracle:17 graalvm-oracle:21 ibm-semeru-openj9-java11:11.0.12+7_openj9-0.27.0 ibm-semeru-openj9-java11:11.0.13+8_openj9-0.29.0 ibm-semeru-openj9-java11:11.0.14+9_openj9-0.30.0 ibm-semeru-openj9-java11:11.0.14.1+1_openj9-0.30.1 ibm-semeru-openj9-java11:11.0.15+10_openj9-0.32.0 ibm-semeru-openj9-java11:11.0.16+8_openj9-0.33.0 ibm-semeru-openj9-java11:11.0.16.1+1_openj9-0.33.1 ibm-semeru-openj9-java11:11.0.17+8_openj9-0.35.0 ibm-semeru-openj9-java11:11.0.18+10_openj9-0.36.1 ibm-semeru-openj9-java11:11.0.19+7_openj9-0.38.0 ibm-semeru-openj9-java11:11.0.20+8_openj9-0.40.0 ibm-semeru-openj9-java11:11.0.20.1+1_openj9-0.40.0 ibm-semeru-openj9-java11:11.0.21+9_openj9-0.41.0 ibm-semeru-openj9-java11:11.0.22+7_openj9-0.43.0 ibm-semeru-openj9-java11:11.0.23+9_openj9-0.44.0 ibm-semeru-openj9-java17:17.0.1+12_openj9-0.29.1 ibm-semeru-openj9-java17:17.0.2+8_openj9-0.30.0 ibm-semeru-openj9-java17:17.0.3+7_openj9-0.32.0 ibm-semeru-openj9-java17:17.0.4+8_openj9-0.33.0 ibm-semeru-openj9-java17:17.0.4.1+1_openj9-0.33.1 ibm-semeru-openj9-java17:17.0.5+8_openj9-0.35.0 ibm-semeru-openj9-java17:17.0.6+10_openj9-0.36.0 ibm-semeru-openj9-java17:17.0.7+7_openj9-0.38.0 ibm-semeru-openj9-java17:17.0.8+7_openj9-0.40.0 ibm-semeru-openj9-java17:17.0.8.1+1_openj9-0.40.0 ibm-semeru-openj9-java17:17.0.9+9_openj9-0.41.0 ibm-semeru-openj9-java17:17.0.10+7_openj9-0.43.0 ibm-semeru-openj9-java17:17.0.11+9_openj9-0.44.0 ibm-semeru-openj9-java21:21.0.1+12_openj9-0.42.0 ibm-semeru-openj9-java21:21.0.2+13_openj9-0.43.0 ibm-semeru-openj9-java21:21.0.3+9_openj9-0.44.0 java-oracle:17 java-oracle:21 liberica:8.0.202 liberica:8.0.212 liberica:8.0.222 liberica:8.0.232 liberica:8.0.242 liberica:8.0.252 liberica:8.0.262 liberica:8.0.265 liberica:8.0.272 liberica:8.0.275 liberica:8.0.282 liberica:8.0.292 liberica:8.0.302 liberica:8.0.312 liberica:8.0.322 liberica:8.0.332 liberica:8.0.333 liberica:8.0.342 liberica:8.0.345 liberica:8.0.352 liberica:8.0.362 liberica:8.0.372 liberica:8.0.382 liberica:8.0.392 liberica:8.0.402 liberica:8.0.412 liberica:8.0.422 liberica:10.0.2 liberica:11.0.0 liberica:11.0.1 liberica:11.0.2 liberica:11.0.3 liberica:11.0.4 liberica:11.0.5 liberica:11.0.6 liberica:11.0.7 liberica:11.0.8 liberica:11.0.9 liberica:11.0.10 liberica:11.0.11 liberica:11.0.12 liberica:11.0.13 liberica:11.0.14 liberica:11.0.15 liberica:11.0.16 liberica:11.0.17 liberica:11.0.18 liberica:11.0.19 liberica:11.0.20 liberica:11.0.21 liberica:11.0.22 liberica:11.0.23 liberica:11.0.24 liberica:11.1.9 liberica:11.1.14 liberica:11.1.15 liberica:11.1.16 liberica:11.1.20 liberica:12.0.0 liberica:12.0.1 liberica:12.0.2 liberica:13.0.0 liberica:13.0.1 liberica:13.0.2 liberica:14.0.0 liberica:14.0.1 liberica:14.0.2 liberica:15.0.0 liberica:15.0.1 liberica:15.0.2 liberica:16.0.0 liberica:16.0.1 liberica:16.0.2 liberica:17.0.0 liberica:17.0.1 liberica:17.0.2 liberica:17.0.3 liberica:17.0.4 liberica:17.0.5 liberica:17.0.6 liberica:17.0.7 liberica:17.0.8 liberica:17.0.9 liberica:17.0.10 liberica:17.0.11 liberica:17.0.12 liberica:17.1.3 liberica:17.1.4 liberica:17.1.8 liberica:18.0.0 liberica:18.0.1 liberica:18.0.2 liberica:18.1.1 liberica:18.1.2 liberica:19.0.0 liberica:19.0.1 liberica:19.0.2 liberica:20.0.0 liberica:20.0.1 liberica:20.0.2 liberica:21.0.0 liberica:21.0.1 liberica:21.0.2 liberica:21.0.3 liberica:21.0.4 liberica:22.0.0 liberica:22.0.1 liberica:22.0.2 liberica-crac:17.0.9 liberica-crac:17.0.10 liberica-crac:17.0.11 liberica-crac:17.0.12 liberica-crac:21.0.1 liberica-crac:21.0.2 liberica-crac:21.0.3 liberica-crac:21.0.4 liberica-full:8.0.242 liberica-full:8.0.252 liberica-full:8.0.262 liberica-full:8.0.265 liberica-full:8.0.272 liberica-full:8.0.275 liberica-full:8.0.282 liberica-full:8.0.292 liberica-full:8.0.302 liberica-full:8.0.312 liberica-full:8.0.322 liberica-full:8.0.332 liberica-full:8.0.333 liberica-full:8.0.342 liberica-full:8.0.345 liberica-full:8.0.352 liberica-full:8.0.362 liberica-full:8.0.372 liberica-full:8.0.382 liberica-full:8.0.392 liberica-full:8.0.402 liberica-full:8.0.412 liberica-full:8.0.422 liberica-full:11.0.6 liberica-full:11.0.7 liberica-full:11.0.8 liberica-full:11.0.9 liberica-full:11.0.10 liberica-full:11.0.11 liberica-full:11.0.12 liberica-full:11.0.13 liberica-full:11.0.14 liberica-full:11.0.15 liberica-full:11.0.16 liberica-full:11.0.17 liberica-full:11.0.18 liberica-full:11.0.19 liberica-full:11.0.20 liberica-full:11.0.21 liberica-full:11.0.22 liberica-full:11.0.23 liberica-full:11.0.24 liberica-full:11.1.9 liberica-full:11.1.14 liberica-full:11.1.15 liberica-full:11.1.16 liberica-full:11.1.20 liberica-full:13.0.2 liberica-full:14.0.0 liberica-full:14.0.1 liberica-full:14.0.2 liberica-full:15.0.0 liberica-full:15.0.1 liberica-full:15.0.2 liberica-full:16.0.0 liberica-full:16.0.1 liberica-full:16.0.2 liberica-full:17.0.0 liberica-full:17.0.1 liberica-full:17.0.2 liberica-full:17.0.3 liberica-full:17.0.4 liberica-full:17.0.5 liberica-full:17.0.6 liberica-full:17.0.7 liberica-full:17.0.8 liberica-full:17.0.9 liberica-full:17.0.10 liberica-full:17.0.11 liberica-full:17.0.12 liberica-full:17.1.3 liberica-full:17.1.4 liberica-full:17.1.8 liberica-full:18.0.0 liberica-full:18.0.1 liberica-full:18.0.2 liberica-full:18.1.1 liberica-full:18.1.2 liberica-full:19.0.0 liberica-full:19.0.1 liberica-full:19.0.2 liberica-full:20.0.0 liberica-full:20.0.1 liberica-full:20.0.2 liberica-full:21.0.0 liberica-full:21.0.1 liberica-full:21.0.2 liberica-full:21.0.3 liberica-full:21.0.4 liberica-full:22.0.0 liberica-full:22.0.1 liberica-full:22.0.2 liberica-jre:8.0.202 liberica-jre:8.0.212 liberica-jre:8.0.222 liberica-jre:8.0.232 liberica-jre:8.0.242 liberica-jre:8.0.252 liberica-jre:8.0.262 liberica-jre:8.0.265 liberica-jre:8.0.272 liberica-jre:8.0.275 liberica-jre:8.0.282 liberica-jre:8.0.292 liberica-jre:8.0.302 liberica-jre:8.0.312 liberica-jre:8.0.322 liberica-jre:8.0.332 liberica-jre:8.0.333 liberica-jre:8.0.342 liberica-jre:8.0.345 liberica-jre:8.0.352 liberica-jre:8.0.362 liberica-jre:8.0.372 liberica-jre:8.0.382 liberica-jre:8.0.392 liberica-jre:8.0.402 liberica-jre:8.0.412 liberica-jre:8.0.422 liberica-jre:10.0.2 liberica-jre:11.0.5 liberica-jre:11.0.6 liberica-jre:11.0.7 liberica-jre:11.0.8 liberica-jre:11.0.9 liberica-jre:11.0.10 liberica-jre:11.0.11 liberica-jre:11.0.12 liberica-jre:11.0.13 liberica-jre:11.0.14 liberica-jre:11.0.15 liberica-jre:11.0.16 liberica-jre:11.0.17 liberica-jre:11.0.18 liberica-jre:11.0.19 liberica-jre:11.0.20 liberica-jre:11.0.21 liberica-jre:11.0.22 liberica-jre:11.0.23 liberica-jre:11.0.24 liberica-jre:11.1.9 liberica-jre:11.1.14 liberica-jre:11.1.15 liberica-jre:11.1.16 liberica-jre:11.1.20 liberica-jre:13.0.1 liberica-jre:13.0.2 liberica-jre:14.0.0 liberica-jre:14.0.1 liberica-jre:14.0.2 liberica-jre:15.0.0 liberica-jre:15.0.1 liberica-jre:15.0.2 liberica-jre:16.0.0 liberica-jre:16.0.1 liberica-jre:16.0.2 liberica-jre:17.0.0 liberica-jre:17.0.1 liberica-jre:17.0.2 liberica-jre:17.0.3 liberica-jre:17.0.4 liberica-jre:17.0.5 liberica-jre:17.0.6 liberica-jre:17.0.7 liberica-jre:17.0.8 liberica-jre:17.0.9 liberica-jre:17.0.10 liberica-jre:17.0.11 liberica-jre:17.0.12 liberica-jre:17.1.3 liberica-jre:17.1.4 liberica-jre:17.1.8 liberica-jre:18.0.0 liberica-jre:18.0.1 liberica-jre:18.0.2 liberica-jre:18.1.1 liberica-jre:18.1.2 liberica-jre:19.0.0 liberica-jre:19.0.1 liberica-jre:19.0.2 liberica-jre:20.0.0 liberica-jre:20.0.1 liberica-jre:20.0.2 liberica-jre:21.0.0 liberica-jre:21.0.1 liberica-jre:21.0.2 liberica-jre:21.0.3 liberica-jre:21.0.4 liberica-jre:22.0.0 liberica-jre:22.0.1 liberica-jre:22.0.2 liberica-jre-full:8.0.242 liberica-jre-full:8.0.252 liberica-jre-full:8.0.262 liberica-jre-full:8.0.265 liberica-jre-full:8.0.272 liberica-jre-full:8.0.275 liberica-jre-full:8.0.282 liberica-jre-full:8.0.292 liberica-jre-full:8.0.302 liberica-jre-full:8.0.312 liberica-jre-full:8.0.322 liberica-jre-full:8.0.332 liberica-jre-full:8.0.333 liberica-jre-full:8.0.342 liberica-jre-full:8.0.345 liberica-jre-full:8.0.352 liberica-jre-full:8.0.362 liberica-jre-full:8.0.372 liberica-jre-full:8.0.382 liberica-jre-full:8.0.392 liberica-jre-full:8.0.402 liberica-jre-full:8.0.412 liberica-jre-full:8.0.422 liberica-jre-full:11.0.6 liberica-jre-full:11.0.7 liberica-jre-full:11.0.8 liberica-jre-full:11.0.9 liberica-jre-full:11.0.10 liberica-jre-full:11.0.11 liberica-jre-full:11.0.12 liberica-jre-full:11.0.13 liberica-jre-full:11.0.14 liberica-jre-full:11.0.15 liberica-jre-full:11.0.16 liberica-jre-full:11.0.17 liberica-jre-full:11.0.18 liberica-jre-full:11.0.19 liberica-jre-full:11.0.20 liberica-jre-full:11.0.21 liberica-jre-full:11.0.22 liberica-jre-full:11.0.23 liberica-jre-full:11.0.24 liberica-jre-full:11.1.9 liberica-jre-full:11.1.14 liberica-jre-full:11.1.15 liberica-jre-full:11.1.16 liberica-jre-full:11.1.20 liberica-jre-full:13.0.2 liberica-jre-full:14.0.0 liberica-jre-full:14.0.1 liberica-jre-full:14.0.2 liberica-jre-full:15.0.0 liberica-jre-full:15.0.1 liberica-jre-full:15.0.2 liberica-jre-full:16.0.0 liberica-jre-full:16.0.1 liberica-jre-full:16.0.2 liberica-jre-full:17.0.0 liberica-jre-full:17.0.1 liberica-jre-full:17.0.2 liberica-jre-full:17.0.3 liberica-jre-full:17.0.4 liberica-jre-full:17.0.5 liberica-jre-full:17.0.6 liberica-jre-full:17.0.7 liberica-jre-full:17.0.8 liberica-jre-full:17.0.9 liberica-jre-full:17.0.10 liberica-jre-full:17.0.11 liberica-jre-full:17.0.12 liberica-jre-full:17.1.3 liberica-jre-full:17.1.4 liberica-jre-full:17.1.8 liberica-jre-full:18.0.0 liberica-jre-full:18.0.1 liberica-jre-full:18.0.2 liberica-jre-full:18.1.1 liberica-jre-full:18.1.2 liberica-jre-full:19.0.0 liberica-jre-full:19.0.1 liberica-jre-full:19.0.2 liberica-jre-full:20.0.0 liberica-jre-full:20.0.1 liberica-jre-full:20.0.2 liberica-jre-full:21.0.0 liberica-jre-full:21.0.1 liberica-jre-full:21.0.2 liberica-jre-full:21.0.3 liberica-jre-full:21.0.4 liberica-jre-full:22.0.0 liberica-jre-full:22.0.1 liberica-jre-full:22.0.2 liberica-lite:8.0.302 liberica-lite:8.0.312 liberica-lite:8.0.322 liberica-lite:8.0.332 liberica-lite:8.0.333 liberica-lite:8.0.342 liberica-lite:8.0.345 liberica-lite:8.0.352 liberica-lite:8.0.362 liberica-lite:8.0.372 liberica-lite:8.0.382 liberica-lite:8.0.392 liberica-lite:8.0.402 liberica-lite:8.0.412 liberica-lite:8.0.422 liberica-lite:11.0.0 liberica-lite:11.0.1 liberica-lite:11.0.2 liberica-lite:11.0.3 liberica-lite:11.0.4 liberica-lite:11.0.5 liberica-lite:11.0.6 liberica-lite:11.0.7 liberica-lite:11.0.8 liberica-lite:11.0.9 liberica-lite:11.0.10 liberica-lite:11.0.11 liberica-lite:11.0.12 liberica-lite:11.0.13 liberica-lite:11.0.14 liberica-lite:11.0.15 liberica-lite:11.0.16 liberica-lite:11.0.17 liberica-lite:11.0.18 liberica-lite:11.0.19 liberica-lite:11.0.20 liberica-lite:11.0.21 liberica-lite:11.0.22 liberica-lite:11.0.23 liberica-lite:11.0.24 liberica-lite:11.1.9 liberica-lite:11.1.14 liberica-lite:11.1.15 liberica-lite:11.1.16 liberica-lite:11.1.20 liberica-lite:12.0.0 liberica-lite:12.0.1 liberica-lite:12.0.2 liberica-lite:13.0.0 liberica-lite:13.0.1 liberica-lite:13.0.2 liberica-lite:14.0.0 liberica-lite:14.0.1 liberica-lite:14.0.2 liberica-lite:15.0.0 liberica-lite:15.0.1 liberica-lite:15.0.2 liberica-lite:16.0.0 liberica-lite:16.0.1 liberica-lite:16.0.2 liberica-lite:17.0.0 liberica-lite:17.0.1 liberica-lite:17.0.2 liberica-lite:17.0.3 liberica-lite:17.0.4 liberica-lite:17.0.5 liberica-lite:17.0.6 liberica-lite:17.0.7 liberica-lite:17.0.8 liberica-lite:17.0.9 liberica-lite:17.0.10 liberica-lite:17.0.11 liberica-lite:17.0.12 liberica-lite:17.1.3 liberica-lite:17.1.4 liberica-lite:17.1.8 liberica-lite:18.0.0 liberica-lite:18.0.1 liberica-lite:18.0.2 liberica-lite:18.1.1 liberica-lite:18.1.2 liberica-lite:19.0.0 liberica-lite:19.0.1 liberica-lite:19.0.2 liberica-lite:20.0.0 liberica-lite:20.0.1 liberica-lite:20.0.2 liberica-lite:21.0.0 liberica-lite:21.0.1 liberica-lite:21.0.2 liberica-lite:21.0.3 liberica-lite:21.0.4 liberica-lite:22.0.0 liberica-lite:22.0.1 liberica-lite:22.0.2 temurin:1.8.0-302 temurin:1.8.0-312 temurin:1.8.0-322 temurin:1.8.0-332 temurin:1.8.0-342 temurin:1.8.0-345 temurin:1.8.0-352 temurin:1.8.0-362 temurin:1.8.0-372 temurin:1.8.0-382 temurin:1.8.0-392 temurin:1.8.0-402 temurin:1.8.0-412 temurin:1.8.0-422 temurin:1.11.0.12 temurin:1.11.0.13 temurin:1.11.0.14 temurin:1.11.0.14.1 temurin:1.11.0.15 temurin:1.11.0.16 temurin:1.11.0.16.1 temurin:1.11.0.17 temurin:1.11.0.18 temurin:1.11.0.19 temurin:1.11.0.20 temurin:1.11.0.20.1 temurin:1.11.0.21 temurin:1.11.0.22 temurin:1.11.0.23 temurin:1.11.0.24 temurin:1.16.0.2 temurin:1.17 temurin:1.17.0.1 temurin:1.17.0.2 temurin:1.17.0.3 temurin:1.17.0.4 temurin:1.17.0.4.1 temurin:1.17.0.5 temurin:1.17.0.6 temurin:1.17.0.7 temurin:1.17.0.8 temurin:1.17.0.8.1 temurin:1.17.0.9 temurin:1.17.0.10 temurin:1.17.0.11 temurin:1.17.0.12 temurin:1.18 temurin:1.18.0.1 temurin:1.18.0.2 temurin:1.18.0.2.1 temurin:1.19 temurin:1.19.0.1 temurin:1.19.0.2 temurin:1.20 temurin:1.20.0.1 temurin:1.20.0.2 temurin:1.21 temurin:1.21.0.1 temurin:1.21.0.2 temurin:1.21.0.3 temurin:1.21.0.4 temurin-debugimage:1.8.0-302 temurin-debugimage:1.8.0-312 temurin-debugimage:1.8.0-322 temurin-debugimage:1.8.0-332 temurin-debugimage:1.8.0-342 temurin-debugimage:1.8.0-345 temurin-debugimage:1.8.0-352 temurin-debugimage:1.8.0-362 temurin-debugimage:1.8.0-372 temurin-debugimage:1.8.0-382 temurin-debugimage:1.8.0-392 temurin-debugimage:1.8.0-402 temurin-debugimage:1.8.0-412 temurin-debugimage:1.8.0-422 temurin-debugimage:1.11.0.12 temurin-debugimage:1.11.0.13 temurin-debugimage:1.11.0.14 temurin-debugimage:1.11.0.14.1 temurin-debugimage:1.11.0.15 temurin-debugimage:1.11.0.16 temurin-debugimage:1.11.0.16.1 temurin-debugimage:1.11.0.17 temurin-debugimage:1.11.0.18 temurin-debugimage:1.11.0.19 temurin-debugimage:1.11.0.20 temurin-debugimage:1.11.0.20.1 temurin-debugimage:1.11.0.21 temurin-debugimage:1.11.0.22 temurin-debugimage:1.11.0.23 temurin-debugimage:1.11.0.24 temurin-debugimage:1.16.0.2 temurin-debugimage:1.17 temurin-debugimage:1.17.0.1 temurin-debugimage:1.17.0.2 temurin-debugimage:1.17.0.3 temurin-debugimage:1.17.0.4 temurin-debugimage:1.17.0.4.1 temurin-debugimage:1.17.0.5 temurin-debugimage:1.17.0.6 temurin-debugimage:1.17.0.7 temurin-debugimage:1.17.0.8 temurin-debugimage:1.17.0.8.1 temurin-debugimage:1.17.0.9 temurin-debugimage:1.17.0.10 temurin-debugimage:1.17.0.11 temurin-debugimage:1.17.0.12 temurin-debugimage:1.18 temurin-debugimage:1.18.0.1 temurin-debugimage:1.18.0.2 temurin-debugimage:1.18.0.2.1 temurin-debugimage:1.19 temurin-debugimage:1.19.0.1 temurin-debugimage:1.19.0.2 temurin-debugimage:1.20 temurin-debugimage:1.20.0.1 temurin-debugimage:1.20.0.2 temurin-debugimage:1.21 temurin-debugimage:1.21.0.1 temurin-debugimage:1.21.0.2 temurin-debugimage:1.21.0.3 temurin-debugimage:1.21.0.4 temurin-jre:1.8.0-302 temurin-jre:1.8.0-312 temurin-jre:1.8.0-322 temurin-jre:1.8.0-332 temurin-jre:1.8.0-342 temurin-jre:1.8.0-345 temurin-jre:1.8.0-352 temurin-jre:1.8.0-362 temurin-jre:1.8.0-372 temurin-jre:1.8.0-382 temurin-jre:1.8.0-392 temurin-jre:1.8.0-402 temurin-jre:1.8.0-412 temurin-jre:1.8.0-422 temurin-jre:1.11.0.12 temurin-jre:1.11.0.13 temurin-jre:1.11.0.14 temurin-jre:1.11.0.14.1 temurin-jre:1.11.0.15 temurin-jre:1.11.0.16 temurin-jre:1.11.0.16.1 temurin-jre:1.11.0.17 temurin-jre:1.11.0.18 temurin-jre:1.11.0.19 temurin-jre:1.11.0.20 temurin-jre:1.11.0.20.1 temurin-jre:1.11.0.21 temurin-jre:1.11.0.22 temurin-jre:1.11.0.23 temurin-jre:1.11.0.24 temurin-jre:1.17.0.1 temurin-jre:1.17.0.2 temurin-jre:1.17.0.3 temurin-jre:1.17.0.4 temurin-jre:1.17.0.4.1 temurin-jre:1.17.0.5 temurin-jre:1.17.0.6 temurin-jre:1.17.0.7 temurin-jre:1.17.0.8 temurin-jre:1.17.0.8.1 temurin-jre:1.17.0.9 temurin-jre:1.17.0.10 temurin-jre:1.17.0.11 temurin-jre:1.17.0.12 temurin-jre:1.18.0.1 temurin-jre:1.18.0.2 temurin-jre:1.18.0.2.1 temurin-jre:1.19 temurin-jre:1.19.0.1 temurin-jre:1.19.0.2 temurin-jre:1.20 temurin-jre:1.20.0.1 temurin-jre:1.20.0.2 temurin-jre:1.21 temurin-jre:1.21.0.1 temurin-jre:1.21.0.2 temurin-jre:1.21.0.3 temurin-jre:1.21.0.4 temurin-testimage:1.11.0.12 temurin-testimage:1.11.0.13 temurin-testimage:1.11.0.18 temurin-testimage:1.11.0.20 temurin-testimage:1.11.0.20.1 temurin-testimage:1.11.0.21 temurin-testimage:1.11.0.22 temurin-testimage:1.11.0.23 temurin-testimage:1.11.0.24 temurin-testimage:1.16.0.2 temurin-testimage:1.17 temurin-testimage:1.17.0.6 temurin-testimage:1.17.0.8 temurin-testimage:1.17.0.8.1 temurin-testimage:1.17.0.9 temurin-testimage:1.17.0.10 temurin-testimage:1.17.0.11 temurin-testimage:1.17.0.12 temurin-testimage:1.19.0.2 temurin-testimage:1.20 temurin-testimage:1.20.0.2 temurin-testimage:1.21 temurin-testimage:1.21.0.1 temurin-testimage:1.21.0.2 temurin-testimage:1.21.0.3 temurin-testimage:1.21.0.4 zulu:6.0.77 zulu:6.0.79 zulu:6.0.83 zulu:6.0.87 zulu:6.0.89 zulu:6.0.93 zulu:6.0.97 zulu:6.0.99 zulu:6.0.103 zulu:6.0.107 zulu:6.0.113 zulu:6.0.119 zulu:7.0.95 zulu:7.0.101 zulu:7.0.111 zulu:7.0.121 zulu:7.0.131 zulu:7.0.141 zulu:7.0.154 zulu:7.0.161 zulu:7.0.171 zulu:7.0.181 zulu:7.0.191 zulu:7.0.201 zulu:7.0.211 zulu:7.0.222 zulu:7.0.232 zulu:7.0.242 zulu:7.0.252 zulu:7.0.262 zulu:7.0.272 zulu:7.0.282 zulu:7.0.285 zulu:7.0.292 zulu:7.0.302 zulu:7.0.312 zulu:7.0.322 zulu:7.0.332 zulu:7.0.342 zulu:7.0.352 zulu:8.0.71 zulu:8.0.72 zulu:8.0.91 zulu:8.0.92 zulu:8.0.102 zulu:8.0.112 zulu:8.0.121 zulu:8.0.131 zulu:8.0.144 zulu:8.0.152 zulu:8.0.162 zulu:8.0.163 zulu:8.0.172 zulu:8.0.181 zulu:8.0.192 zulu:8.0.201 zulu:8.0.202 zulu:8.0.212 zulu:8.0.222 zulu:8.0.232 zulu:8.0.242 zulu:8.0.252 zulu:8.0.262 zulu:8.0.265 zulu:8.0.272 zulu:8.0.275 zulu:8.0.282 zulu:8.0.292 zulu:8.0.302 zulu:8.0.312 zulu:8.0.322 zulu:8.0.332 zulu:8.0.342 zulu:8.0.345 zulu:8.0.352 zulu:8.0.362 zulu:8.0.372 zulu:8.0.382 zulu:8.0.392 zulu:8.0.402 zulu:8.0.412 zulu:8.0.422 zulu:9.0.0 zulu:9.0.1 zulu:9.0.4 zulu:9.0.7 zulu:10.0.0 zulu:10.0.1 zulu:10.0.2 zulu:11.0.1 zulu:11.0.2 zulu:11.0.3 zulu:11.0.4 zulu:11.0.5 zulu:11.0.6 zulu:11.0.7 zulu:11.0.8 zulu:11.0.9 zulu:11.0.10 zulu:11.0.11 zulu:11.0.12 zulu:11.0.13 zulu:11.0.14 zulu:11.0.15 zulu:11.0.16 zulu:11.0.17 zulu:11.0.18 zulu:11.0.19 zulu:11.0.20 zulu:11.0.21 zulu:11.0.22 zulu:11.0.23 zulu:11.0.24 zulu:12.0.0 zulu:12.0.1 zulu:12.0.2 zulu:13.0.0 zulu:13.0.1 zulu:13.0.2 zulu:13.0.3 zulu:13.0.4 zulu:13.0.5 zulu:13.0.6 zulu:13.0.7 zulu:13.0.8 zulu:13.0.9 zulu:13.0.10 zulu:13.0.11 zulu:13.0.12 zulu:13.0.13 zulu:13.0.14 zulu:14.0.0 zulu:14.0.1 zulu:14.0.2 zulu:15.0.0 zulu:15.0.1 zulu:15.0.2 zulu:15.0.3 zulu:15.0.4 zulu:15.0.5 zulu:15.0.6 zulu:15.0.7 zulu:15.0.8 zulu:15.0.9 zulu:15.0.10 zulu:16.0.0 zulu:16.0.1 zulu:16.0.2 zulu:17.0.0 zulu:17.0.1 zulu:17.0.2 zulu:17.0.3 zulu:17.0.4 zulu:17.0.5 zulu:17.0.6 zulu:17.0.7 zulu:17.0.8 zulu:17.0.9 zulu:17.0.10 zulu:17.0.11 zulu:17.0.12 zulu:18.0.0 zulu:18.0.1 zulu:18.0.2 zulu:19.0.0 zulu:19.0.1 zulu:19.0.2 zulu:20.0.0 zulu:20.0.1 zulu:20.0.2 zulu:21.0.0 zulu:21.0.1 zulu:21.0.2 zulu:21.0.3 zulu:21.0.4 zulu:22.0.0 zulu:22.0.1 zulu:22.0.2 zulu-jre:8.0.212 zulu-jre:8.0.222 zulu-jre:8.0.232 zulu-jre:8.0.242 zulu-jre:8.0.252 zulu-jre:8.0.262 zulu-jre:8.0.265 zulu-jre:8.0.272 zulu-jre:8.0.275 zulu-jre:8.0.282 zulu-jre:8.0.292 zulu-jre:8.0.302 zulu-jre:8.0.312 zulu-jre:8.0.322 zulu-jre:8.0.332 zulu-jre:8.0.342 zulu-jre:8.0.345 zulu-jre:8.0.352 zulu-jre:8.0.362 zulu-jre:8.0.372 zulu-jre:8.0.382 zulu-jre:8.0.392 zulu-jre:8.0.402 zulu-jre:8.0.412 zulu-jre:8.0.422 zulu-jre:11.0.3 zulu-jre:11.0.4 zulu-jre:11.0.5 zulu-jre:11.0.6 zulu-jre:11.0.7 zulu-jre:11.0.8 zulu-jre:11.0.9 zulu-jre:11.0.10 zulu-jre:11.0.11 zulu-jre:11.0.12 zulu-jre:11.0.13 zulu-jre:11.0.14 zulu-jre:11.0.15 zulu-jre:11.0.16 zulu-jre:11.0.17 zulu-jre:11.0.18 zulu-jre:11.0.19 zulu-jre:11.0.20 zulu-jre:11.0.21 zulu-jre:11.0.22 zulu-jre:11.0.23 zulu-jre:11.0.24 zulu-jre:13.0.1 zulu-jre:13.0.2 zulu-jre:13.0.3 zulu-jre:13.0.4 zulu-jre:13.0.5 zulu-jre:13.0.6 zulu-jre:13.0.7 zulu-jre:13.0.8 zulu-jre:13.0.9 zulu-jre:13.0.10 zulu-jre:13.0.11 zulu-jre:13.0.12 zulu-jre:13.0.13 zulu-jre:13.0.14 zulu-jre:14.0.1 zulu-jre:14.0.2 zulu-jre:15.0.0 zulu-jre:15.0.1 zulu-jre:15.0.2 zulu-jre:15.0.3 zulu-jre:15.0.4 zulu-jre:15.0.5 zulu-jre:15.0.6 zulu-jre:15.0.7 zulu-jre:15.0.8 zulu-jre:15.0.9 zulu-jre:15.0.10 zulu-jre:16.0.0 zulu-jre:16.0.1 zulu-jre:16.0.2 zulu-jre:17.0.0 zulu-jre:17.0.1 zulu-jre:17.0.2 zulu-jre:17.0.3 zulu-jre:17.0.4 zulu-jre:17.0.5 zulu-jre:17.0.6 zulu-jre:17.0.7 zulu-jre:17.0.8 zulu-jre:17.0.9 zulu-jre:17.0.10 zulu-jre:17.0.11 zulu-jre:17.0.12 zulu-jre:18.0.0 zulu-jre:18.0.1 zulu-jre:18.0.2 zulu-jre:19.0.0 zulu-jre:19.0.1 zulu-jre:19.0.2 zulu-jre:20.0.0 zulu-jre:20.0.1 zulu-jre:20.0.2 zulu-jre:21.0.0 zulu-jre:21.0.1 zulu-jre:21.0.2 zulu-jre:21.0.3 zulu-jre:21.0.4 zulu-jre:22.0.0 zulu-jre:22.0.1 zulu-jre:22.0.2
Reporting Managed Java Versions
Coursier takes a really long time to figure out the versions of Java that it manages. During this time it is completely unresponsive. For example, on my super-fast, powerful computer it takes over 4.5 minutes!
$ time cs java --installed adoptium:1.11.0.23 installed at /home/mslinn/.cache/coursier/arc/https/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%252B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz/jdk-11.0.23+9 adoptium:1.17 installed at /home/mslinn/.cache/coursier/arc/https/github.com/adoptium/temurin17-binaries/releases/download/jdk-17%252B35/OpenJDK17-jdk_x64_linux_hotspot_17_35.tar.gz/jdk-17+35 temurin:1.11.0.23 installed at /home/mslinn/.cache/coursier/arc/https/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%252B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz/jdk-11.0.23+9 temurin:1.17 installed at /home/mslinn/.cache/coursier/arc/https/github.com/adoptium/temurin17-binaries/releases/download/jdk-17%252B35/OpenJDK17-jdk_x64_linux_hotspot_17_35.tar.gz/jdk-17+35 real 4m36.033s user 0m42.734s sys 0m28.136s
Set Java Version
Coursier's default JDK is Temurin 11. To temporarily work with Temuirin 11, use the following incantation:
$ eval "$(cs java --jvm 11 --env)" export CS_FORMER_JAVA_HOME="$JAVA_HOME" export JAVA_HOME="/home/mslinn/.cache/coursier/arc/https/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%252B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz/jdk-11.0.23+9" export PATH="/home/mslinn/.cache/coursier/arc/https/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%252B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz/jdk-11.0.23+9/bin:$PATH"
As you can see, the above incantation set JAVA_HOME
for Java 11, and included the Java 11 binaries on the PATH
,
To make the above setting permanent,
add the following to ~/.bashrc
or ~/.profile
, as appropriate for your OS.
eval "$(cs java --jvm 11 --env)"
I found that Java 17 provided fewer problems than Java 8 or 11.
To install Temurin Java 17 and make it the default Java,
change the incantation to the following, and save it in ~/.bashrc
or ~/.profile
(as appropriate for your OS) to:
eval "$(cs java --jvm 17 --env)"
The most recent versions of Java offer significant performance boosts. Consider using Java 21 for development and production:
$ eval "$(cs java --jvm 21 --env)" Downloading https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.4%2B7/OpenJDK21U-jdk_x64_linux_hotspot_21.0.4_7.tar.gz Downloaded https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.4%2B7/OpenJDK21U-jdk_x64_linux_hotspot_21.0.4_7.tar.gz
Unset JAVA_HOME
Coursier gets really messed up if JAVA_HOME
points to a non-existant directory.
Unset it if you encounter weird behavior
when attempting to use Java from Coursier.
$ unset JAVA_HOME
$ cs java -version https://github.com/coursier/jvm-index/raw/master/index.json 100.0% [##########] 1.7 MiB (9.0 MiB / s) openjdk version "11.0.23" 2024-04-16 OpenJDK Runtime Environment Temurin-11.0.23+9 (build 11.0.23+9) OpenJDK 64-Bit Server VM Temurin-11.0.23+9 (build 11.0.23+9, mixed mode)
Illegal Reflective Access
You might encounter the following error message when running a Java or Scala program:
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by some.java.program (file:/some/path/to/a.jar) to constructor some.method() WARNING: Please consider reporting this to the maintainers of some.java.program WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release
I found two approaches to solving the problem:
-
Upgrade to Java 17 or later by adding the following to
~/.bashrc
or~/.profile
, depending on your OS:~/.bashrc or ~/.profileeval "$(cs java --jvm 17 --env)"
Shell$ eval "$(cs java --jvm 17 --env)"
- Fiddle with JVM options, as described in the next section
Fiddling With JVM Options
This solution does not always work as described. The exact incantation might vary, and it is often not obvious how to vary it. Give the following a try if you are so inclined.
Oracle published an explanation. The solution is to pass the following parameter to the JVM:
--add-opens java.base/java.lang=ALL-UNNAMED
You can pass this JVM parameter several ways.
Some programs, like the Scala compiler runner, accept JVM parameters prefaced with the -J
option:
$ scala -J--add-opens=java.base/java.lang=ALL-UNNAMED
Most Java and Scala programs respond to the JAVA_OPTS
environment variable.
The environment variable can be set for just one command:
$ JAVA_OPTS="--add-opens=java.base/java.lang=ALL-UNNAMED" scala
The JAVA_OPTS
environment variable can also be set for the remainder of the console session:
$ export JAVA_OPTS="--add-opens=java.base/java.lang=ALL-UNNAMED"
$ scala
The JVM parameters can be passed to a managed program from Coursier as follows:
$ cs --java-opt --add-opens java.base/java.lang=ALL-UNNAMED launch scala
For a permanent solution, add the following to ~/.bashrc
(Linux) or ~/.profile
(Mac).
export JAVA_OPTS="--add-opens=java.base/java.lang=ALL-UNNAMED"
Skip to Scala Runner Command Line Options
If you followed the above instructions and installed Coursier, please skip the next lecture and proceed to Scala Runner.
© Copyright 1994-2024 Michael Slinn. All rights reserved.
If you would like to request to use this copyright-protected work in any manner,
please send an email.
This website was made using Jekyll and Mike Slinn’s Jekyll Plugins.