Aller au contenu

Compilateur Java

Compilez du code source Java 25 avec elide javac ou dans le build d'un projet Elide, sans installer de JDK, et les options d'Elide pour la sortie JAR et la limite d'erreurs.

Sur cette page

Elide intègre javac pour Java 25 ; aucun JDK séparé n’est nécessaire.

Compiler des fichiers source

elide javac -- -d out src/Hello.java
elide java -- -cp out Hello
0:12 / 0:12

Les options de javac se placent après --. Sans -d, les fichiers de classe sont écrits à côté de leurs sources. elide javac -- -help liste toutes les options de javac.

Options d’Elide

Les options d’Elide se placent avant -- :

OptionRôle
--jar PATHEmpaqueter la sortie dans un JAR à PATH.
--manifest FILEManifeste pour la sortie de --jar.
--max-errors NErreurs affichées avant que les suivantes soient seulement comptées ; 0 les affiche toutes. Les avertissements sont dédupliqués et jamais limités.
--report-used-deps PATHÉcrire les entrées du classpath référencées par la sortie (strict deps de Bazel).
--capabilitiesAfficher les capacités du compilateur en JSON.
--persistent_workerS’exécuter comme worker persistant Bazel, en singleplex ou multiplex.
--classpath-cacheWorker uniquement : réutiliser l’état du classpath d’une compilation à l’autre. ELIDE_WORKER_CLASSPATH_CACHE=0 le désactive.
elide javac --jar target/app.jar -- src/Main.java src/Util.java
elide javac --jar target/app.jar --manifest src/MANIFEST.MF -- src/Main.java

Construire des projets

elide build compile src/main/java et src/test/java, ou les source sets que déclare elide.pkl. Pour ne compiler que main :

elide build compile-java-main
jvm {
  target = 25
  java {
    release = 25
    compiler {
      mode = "embedded"
      flags { "-Xlint:all" }
    }
  }
  features {
    graalvm = false
  }
}
PropriétéSignificationValeur par défaut
jvm.targetCible du bytecode ; le niveau --release quand java.release n’est pas défini."auto" (21)
jvm.java.releaseNiveau --release : compiler uniquement contre l’API de ce JDK."auto"
jvm.java.sourceUtiliser --source/--target au lieu de --release ; ignoré quand release est défini."auto"
jvm.java.compiler.mode"embedded" utilise le javac d’Elide ; "external" lance celui de jvm.javaHome."embedded"
jvm.java.compiler.flagsOptions javac supplémentaires ; --release, -source ou -target ici remplacent celles d’Elide.aucune
jvm.java.sourceSets["<set>"].releaseNiveau --release pour ce seul source set."auto" (celui du projet)
jvm.java.sourceSets["<set>"].flagsOptions javac pour ce source set, après compiler.flags.aucune
jvm.javaHomeJava home pour les compilations externes et les JVM lancées dans un processus séparé.celui d’Elide
jvm.debugCompiler avec -g.true
jvm.features.graalvmPlacer org.graalvm.nativeimage, word et collections sur le classpath de compilation.false
jvm.features.automodulesPlacer les JAR sans descripteur de module sur le module path comme modules automatiques.true

Un source set qui nécessite d’autres réglages, par exemple un source set compilé uniquement contre java.base, les indique sous sourceSets. Nommer un source set que le projet n’a pas fait échouer le build.

sources {
  ["desktopless"] { paths { "src/desktopless/java" } }
}
jvm {
  java {
    sourceSets {
      ["desktopless"] {
        flags { "--limit-modules"; "java.base" }
      }
    }
  }
}

Chaque compilation écrit ses arguments dans javac.args, à côté de sa sortie. Processeurs d’annotations : Dépendances Maven.

Workers persistants Bazel

elide javac --persistent_worker et elide kotlinc --persistent_worker gardent un compilateur actif d’une action Bazel à l’autre. Règles, configuration et exemple complet : Bazel.

Exemples

Partez d’un modèle :

elide init --template java        # Java app with a JUnit test

Cette page vous a-t-elle aidé ?