Main-Class no manifesto e as dependências dentro (o “fat JAR”). A Cube não compila Maven nem Gradle: você gera o .jar no seu computador (ou no CI) e envia. Kotlin, Scala, Clojure e Groovy funcionam do mesmo jeito, desde que virem um .jar assim.
Gerar o .jar
- Gradle
- Maven
Com o plugin Shadow, o
.jar sai em build/libs/ com tudo dentro.build.gradle.kts
java -jar build/libs/bot-all.jar precisa subir sem mais nada.
Enviar
Ponha o.jar num .zip, junto dos arquivos que ele lê (como um application.yml ou a pasta config/). Um único .jar na raiz sobe sem cube.json: a Cube entende que é Java e roda java -jar <arquivo>. Com mais de um, ou para escolher a versão e a memória, use o cube.json:
cube.json
.jar da raiz (e o de target/ ou build/libs/) e já mostra o comando.
.jar maior que o .zip do plano
O .zip vai até 10 MB nos planos pagos, e o.jar já vem compactado: pôr no .zip não diminui nada. Um bot com o JDA, por exemplo, passa disso. Para esse .jar:
1
Crie o projeto sem o .jar
Envie um .zip só com o
cube.json (e os arquivos pequenos que o .jar lê), com o command apontando para o .jar, como java -jar bot.jar. Deixe Iniciar assim que terminar desligado.2
Suba o .jar pela aba Arquivos
Na aba Arquivos do projeto, use Enviar arquivo: vale para arquivos de até 50 MB. Veja Arquivos e editor.
3
Inicie
Clique em Iniciar. Para trocar o
.jar depois, envie o novo pela aba Arquivos e clique em Reiniciar..jar. Um .jar com mais de 50 MB (como o do Lavalink, com uns 100 MB) ainda não cabe.
Versões e memória
- JDK 21 (a padrão) e JDK 25, as versões LTS. Um
.jarcompilado para o Java 17 ou 18 roda nas duas. - Mínimo de 256 MB de memória, em qualquer plano: a máquina virtual do Java não sobe com menos. Por isso Java não cabe no Free (100 MB); o envio responde
language_not_in_plan. - Sem
memoryMb, o projeto entra com 512 MB (ou com o que sobra no plano, nunca menos de 256 MB): um bot de verdade, com o JDA ou com áudio, passa dos 256 MB. O painel já começa em 512 MB. - A Cube põe um teto na JVM pela memória do projeto (
JAVA_TOOL_OPTIONS): o heap fica em até 60% dela abaixo de 1 GB (75% de 1 GB para cima) e a memória direta, a dos buffers de rede e de áudio, em até 1/8. O resto sobra para o próprio Java (classes, código compilado, threads). Passou do heap ou da memória direta, o log mostra umOutOfMemoryError. A linhaPicked up JAVA_TOOL_OPTIONSno começo do log é o Java avisando disso. - Para mudar, ponha um
-Xmxno comando (java -Xmx300m -jar bot.jar), que vale por cima, ou defina a variávelJAVA_TOOL_OPTIONSvocê mesmo em Variáveis de ambiente.
Site ou API em Java
Um site Java escuta em0.0.0.0 na porta da variável PORT (8080 por padrão), como qualquer site ou API. No Spring Boot: server.port=${PORT:8080} no application.properties.
Problemas comuns
no main manifest attribute, in bot.jar: o.jarnão diz qual classe iniciar. Gere pelo Shadow ou pelomaven-shade-plugincom amainClass, como acima.NoClassDefFoundErrorlogo ao subir: faltam as dependências dentro do.jar. Use o.jar“all” ou “shaded”, não o comum.UnsupportedClassVersionError: o.jarfoi compilado para um Java mais novo que o do projeto. Escolha o JDK 25 em Configurações › Geral.OutOfMemoryError: Java heap spaceouCannot reserve … direct buffer memory: o projeto precisa de mais memória. Aumente em Configurações › Geral e reinicie.- O .zip passou do limite do plano: é o
.jar. Siga .jar maior que o .zip do plano.

