MANIFEST.MF and Virtus Cloud configuration file. The platform launches your application using java -jar, giving you a clean, managed JVM runtime without any server configuration. This guide covers the full process from setup to deployment.
Prerequisites
Before you deploy, make sure you have the following:- Java (JDK) installed locally. Download it from the official Java website.
- A Virtus Cloud account — sign up at virtuscloud.app/login using your email or Discord.
- An active paid plan on your account. Browse plans at virtuscloud.app/plans.
JDK versions
Virtus Cloud provides two JDK versions you can select in your config file:VERSION value | JDK version |
|---|---|
recommended | JDK 23 |
latest | JDK 25 |
Create your config file
Every Virtus Cloud deployment requires avirtuscloud.app configuration file at the root of your project. Set MAIN to the name of your compiled JAR file.
Config File Reference
Learn every available parameter — MAIN, MEMORY, VERSION, DISPLAY_NAME, SUBDOMAIN, START, and more.
virtuscloud.app
Startup behavior
Virtus Cloud determines how to start your application based on whether theSTART field is set in your config file.
- If
STARTis not set, the platform runsjava -jar MAIN, whereMAINis the JAR file defined in your config. - If
STARTis set, the platform executes theSTARTcommand directly, giving you full control over JVM flags and arguments.
Custom start with JVM flags
For more information on all startup parameters, see the Config File Reference.
Required files
Your ZIP archive must include the following files:| File | Purpose |
|---|---|
virtuscloud.app or virtuscloud.config | Platform configuration |
project.jar (or your compiled JAR file) | Compiled application bundle |
MANIFEST.MF | JAR manifest with entry point metadata |
Compile your Java project and package it as a self-contained JAR (fat JAR / uber JAR) before uploading. Include all runtime dependencies inside the JAR so the platform does not need an external classpath.
Preparing your project for upload
Before creating your ZIP archive, build your project with Maven, Gradle, or your preferred build tool:target/ (Maven) or build/libs/ (Gradle). Copy it to your project root alongside MANIFEST.MF and virtuscloud.app.
Upload your project
Once your files are ready, package them into a.zip archive and upload using your preferred method.
- CLI upload
- Dashboard upload
Install the CLI
If you do not have the Virtus Cloud CLI installed, run the appropriate command for your system:To update an existing installation:
Authenticate
Retrieve your API key from virtuscloud.app/account by clicking Request API Key, then run:
Troubleshooting
The main file is invalid or corrupted
The main file is invalid or corrupted
This error appears when the JAR file specified in
MAIN does not exist in your ZIP archive. Make sure the JAR filename in your config matches the actual filename exactly, including the .jar extension.Bad Memory
Bad Memory
The minimum RAM for a bot is 256 MB and for a website or API is 512 MB. JVM-based applications often require more memory than lighter runtimes. Increase the
MEMORY value in your config if you see out-of-memory errors. See the LACK_OF_RAM troubleshooting guide for more details.ClassNotFoundException at startup
ClassNotFoundException at startup
This error means a dependency class was not found in the JAR. Make sure you are building a fat JAR (uber JAR) that includes all runtime dependencies. With Maven, use the
maven-shade-plugin or maven-assembly-plugin. With Gradle, use the shadow plugin.