Mike Slinn

Installing Coursier

— Draft —

Published 2013-12-01. Last modified 2024-08-17.
Time to read: 4 minutes.

How to install and work with the Coursier command.

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/docs/cli-installation. I installed Coursier on my WSL instance as follows.

Shell
$ 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:

~/.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:

Shell
$ source ~/.bashrc

Help Message

Coursier provides the cs command-line program for managing its Scala-related programs. The cs help message is:

Shell
$ 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:

Shell
$ 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:

Shell
$ 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.

Shell
$ 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:

Shell
$ 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:

Shell
$ 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:

Shell
$ 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:

Shell
$ 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:

Shell
$ 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:

Shell
$ cs update

You can update a specific application, for example, Scala:

Shell
$ cs update scala

Coursier Java

Java Help

The help message for the cs java subcommand is:

Shell
$  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:

Shell
$ 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!

Shell
$ 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:

Shell
$ 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.

~/.bashrc or ~/.profile
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:

~/.bashrc or ~/.profile
eval "$(cs java --jvm 17 --env)"

The most recent versions of Java offer significant performance boosts. Consider using Java 21 for development and production:

Shell
$ 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.

Shell
$ 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:

Generalized error message
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 ~/.profile
    eval "$(cs java --jvm 17 --env)"
    To activate this setting in consoles that are already open, provide the incantation at the command line:
    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:

Magic JVM parameter
--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:

Pass a JVM option on the command line
$ 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:

Temporarily set the JAVA_OPTS environment variable
$ 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:

More permanently set the JAVA_OPTS environment variable
$ 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:

Pass JVM options to Coursier
$ 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).

~/.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.


* indicates a required field.

Please select the following to receive Mike Slinn’s newsletter:

You can unsubscribe at any time by clicking the link in the footer of emails.

Mike Slinn uses Mailchimp as his marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp’s privacy practices.