Saltar al contenido

Compilador Java

Compile código fuente de Java 25 con elide javac o en la compilación de un proyecto de Elide, sin instalar un JDK, y las opciones de Elide para la salida en JAR y el límite de errores.

En esta página

Elide incluye javac para Java 25; no necesita un JDK aparte.

Compilar archivos fuente

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

Las opciones de javac van después de --. Sin -d, los archivos de clase quedan junto a sus fuentes. elide javac -- -help lista todas las opciones de javac.

Opciones de Elide

Las opciones de Elide van antes de --:

OpciónPropósito
--jar PATHEmpaquetar la salida en un JAR en PATH.
--manifest FILEManifiesto para la salida de --jar.
--max-errors NErrores que se muestran antes de contar el resto; 0 los muestra todos. Las advertencias se deduplican y nunca se limitan.
--report-used-deps PATHEscribir las entradas del classpath a las que hace referencia la salida (strict deps de Bazel).
--capabilitiesImprimir las capacidades del compilador en JSON.
--persistent_workerEjecutarse como worker persistente de Bazel, en modo singleplex o multiplex.
--classpath-cacheSolo en modo worker: reutilizar el estado del classpath entre compilaciones. ELIDE_WORKER_CLASSPATH_CACHE=0 lo desactiva.
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

Compilar proyectos

elide build compila src/main/java y src/test/java, o los conjuntos de fuentes que declara elide.pkl. Para compilar solo main:

elide build compile-java-main
jvm {
  target = 25
  java {
    release = 25
    compiler {
      mode = "embedded"
      flags { "-Xlint:all" }
    }
  }
  features {
    graalvm = false
  }
}
PropiedadSignificadoValor predeterminado
jvm.targetVersión de bytecode de destino; el nivel de --release cuando java.release no está definido."auto" (21)
jvm.java.releaseNivel de --release: compilar solo contra la API de ese JDK."auto"
jvm.java.sourceUsar --source/--target en lugar de --release; se ignora si release está definido."auto"
jvm.java.compiler.mode"embedded" usa el javac de Elide; "external" ejecuta el de jvm.javaHome."embedded"
jvm.java.compiler.flagsOpciones adicionales de javac; --release, -source o -target aquí sustituyen a las de Elide.ninguno
jvm.java.sourceSets["<set>"].releaseNivel de --release solo para ese conjunto de fuentes."auto" (el del proyecto)
jvm.java.sourceSets["<set>"].flagsOpciones de javac para ese conjunto de fuentes, después de compiler.flags.ninguno
jvm.javaHomeDirectorio de Java para compilaciones externas y JVM bifurcadas.el de Elide
jvm.debugCompilar con -g.true
jvm.features.graalvmAñadir org.graalvm.nativeimage, word y collections al classpath de compilación.false
jvm.features.automodulesPoner los JAR sin descriptor de módulo en el module path como módulos automáticos.true

Un conjunto de fuentes que necesita una configuración distinta, como uno compilado solo contra java.base, la indica en sourceSets. Nombrar un conjunto de fuentes que el proyecto no tiene hace fallar la compilación.

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

Cada compilación escribe sus argumentos en javac.args, junto a su salida. Procesadores de anotaciones: Dependencias Maven.

Workers persistentes de Bazel

elide javac --persistent_worker y elide kotlinc --persistent_worker mantienen un compilador activo entre acciones de Bazel. Reglas, configuración y un ejemplo completo: Bazel.

Ejemplos

Empiece desde una plantilla:

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

¿Te resultó útil esta página?