Repository navigation
Java In Detail
By default ([java] version = "auto") the server runs on the Java version that its
Minecraft version asks for. Craft Conductor looks for exactly that version, in this order:
- that version in the server's
[java.versions], - the shared Java folder (
<home>/.craft-conductor/java/, one copy per version for every server on this computer;/data/.craft-conductor/java/in Docker), -
[java] default(your systemjava), if it's exactly that version, - Java already installed on this computer:
JAVA_HOMEand the usual install folders (Eclipse Adoptium, Microsoft, Oracle, Zulu, Corretto, BellSoft on Windows;/Library/Java/JavaVirtualMachinesand Homebrew on macOS;/usr/lib/jvm,/usr/java,/opt/javaon Linux). Each is run once with-XshowSettings:properties -version(nothing else) to read its version and architecture, and the answer is remembered by the file's size and date. A build for another architecture (an x64 Java on an Apple silicon Mac) is skipped. The one picked is written into[java.versions], so the server's choice stays explicit, - a download of Eclipse Temurin into the shared folder, checksum-checked (turn this off with
auto_install = false).
A newer major version is never picked by itself (some loaders and older mods break on one): the
Java page offers it, or set [java] version = 25.
| Command | What it does |
|---|---|
craft-conductor java list |
the shared Java (and which servers use it), Java found on this computer, and which one the server uses |
craft-conductor java install 21 17 |
download Temurin runtimes into the shared folder |
craft-conductor java update |
bring the shared Java to its newest patch releases |
craft-conductor java use 21 |
always run on Java 21 (must be at least what Minecraft needs) |
craft-conductor java use auto |
go back to following the Minecraft version |
craft-conductor java remove 17 |
delete a shared version (refused while a server uses it) |
java -Xms… -Xmx… [Aikar's flags] -Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 -Dstdin.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 [jvm_args] … and the server's own launch arguments.
The -D…encoding settings make the server's console speak UTF-8 both ways, on every Java, so a
command or a Broadcast in any language reaches the server as typed, and the Console and
logs/latest.log show what it says (otherwise, on Windows, Java 17 and older and Paper's console
write in the computer's own code page). Anything in [server] jvm_args comes after them, so a
-Dfile.encoding of your own still wins.
.craft-conductor/java/
21/jdk-21.0.4+7/ a release (craft-conductor-java.json says what it is)
21/jdk-21.0.5+11/ a newer patch release, installed next to it
servers/ which server last started on which Java (one small file each)
checked.json what each Java found on the computer turned out to be
- An update installs the new release next to the old one; servers move to it at their next start.
- Each server start leaves its process id in
<release>/.in-use/. An older release is deleted only when no process listed there is running (and, on Windows, when no program has its files open), and not within five minutes of being replaced (a server may be starting on it that moment). - Deleting a server never deletes a Java another server uses. A shared version that only the deleted server used is removed with it.
- Backups, snapshots and server exports never include Java.
Servers from before 0.23 kept their own copy in <server>/.craft-conductor/java/. Nothing moves it:
it's no longer used, and can be deleted by hand.
When a Minecraft upgrade needs a newer Java, it's found or downloaded during staging, before the server is stopped.
User manual
- Start here
- What it can and can't do
- Getting started
- Creating a server
- Messages
- Your servers
- Dashboard
- Console
- Players
- Mods
- Updates
- Backups
- Java
- Settings
- Playing with friends
- Joining a friend's server
- Remote access and phones
- People and what they may do
- Craft Conductor settings
- Troubleshooting
- Getting help
Power users
- Power users: start here
- Configuration (craft-conductor.toml)
- Building servers from the command line
- Running it forever
- Linux servers without a screen
- Managing players from the command line
- Java in detail
- How an upgrade works
- Updating Craft Conductor
- Mods that block third-party downloads
- Security
- Other ways to install
- For maintainers
- Where Craft Conductor keeps things
- Command line