# Java

## 📁 **Preparing Your Project Files**

Before deploying, **your project must be** [**compiled into an executable JAR file**](/en/faq/general-questions/how-to-build-and-package-a-java-application.md). When compressing your project, ensure that **the `.jar` file is placed at the** [**root**](/en/faq/general-questions/what-is-the-root-of-the-project.md) **of the** [**`.zip`**](/en/faq/general-questions/wip-how-to-compress.md) **archive.**

#### ❌ **Files to Exclude**

Ensure the following files and directories are **not** included in your [`.zip`](/en/faq/general-questions/wip-how-to-compress.md):

```diff
- package-lock.json
- node_modules/
- .cache/
- .git/
```

📌 **Use a** [**`.discloudignore`**](/en/configurations/.discloudignore.md) **file** to automatically exclude these files.

🔗 **Need help with compilation?** Check the FAQ on [**How to Build and Package a Java Application?**](/en/faq/general-questions/how-to-build-and-package-a-java-application.md)

***

## 📦 **Compiling Your Java Application**

To **deploy your Java application**, it must be compiled into an **executable JAR file**.

{% tabs %}
{% tab title="Maven" %}
📄 **Maven Official Documentation** → <https://maven.apache.org/guides/index.html>

```bash
mvn clean package
```

{% endtab %}

{% tab title="Gradle" %}
📄 **Gradle Official Documentation** → <https://docs.gradle.org/current/userguide/userguide.html>

```bash
gradle clean build
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}

#### **Recommendation**

Rename your JAR file to a simple name like `app.jar` to avoid issues with special characters.​
{% endhint %}

***

## 📝 **Setting the Main File**

The `MAIN` parameter in your [`discloud.config`](/en/configurations/discloud.config.md) file should point to your executable JAR file. For example:

```ini
MAIN=app.jar
```

Ensure that `app.jar` matches the name of your compiled JAR file.​

**Note:** For detailed information on setting the main file, refer to Discloud's FAQ on the main file.

***

## ✍️ **Deploying Your Applicaton**

Once your project is **configured and compressed**, you can choose one of the following **deployment methods** on Discloud:

<table data-card-size="large" data-view="cards"><thead><tr><th data-card-target data-type="content-ref"></th><th align="center"></th><th data-hidden></th><th data-hidden></th><th data-hidden></th></tr></thead><tbody><tr><td><a href="/pages/MirZiWoguOgwjGpnqp38">/pages/MirZiWoguOgwjGpnqp38</a></td><td align="center">Upload and manage your application via the web interface.</td><td></td><td></td><td></td></tr><tr><td><a href="/pages/jkiTFOhhnwJRWNqWD323">/pages/jkiTFOhhnwJRWNqWD323</a></td><td align="center">Deploy directly through Discloud’s Discord bot commands.</td><td></td><td></td><td></td></tr><tr><td><a href="/pages/Ume8fPf5afMsOH3sPYUx">/pages/Ume8fPf5afMsOH3sPYUx</a></td><td align="center">Integrate with VS Code for seamless project management.</td><td></td><td></td><td></td></tr><tr><td><a href="/pages/Obx2s2WQT8OXanw7LR2k">/pages/Obx2s2WQT8OXanw7LR2k</a></td><td align="center">Use the command-line interface for quick and efficient deployment.</td><td></td><td></td><td></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.discloud.com/en/development-environment/supported-languages/java.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
