Zum Inhalt springen

Java-Compiler

Kompilieren Sie Java-25-Quellcode mit elide javac oder im Build eines Elide-Projekts ohne JDK-Installation, und die Elide-Optionen für JAR-Ausgabe und Fehlerlimits.

Auf dieser Seite

Elide enthält javac für Java 25; ein separates JDK ist nicht nötig.

Quelldateien kompilieren

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

javac-Optionen folgen nach --. Ohne -d werden die Klassendateien neben ihre Quelldateien geschrieben. elide javac -- -help listet alle javac-Optionen auf.

Elide-Optionen

Elide-Optionen stehen vor --:

OptionZweck
--jar PATHDie Ausgabe in ein JAR unter PATH packen.
--manifest FILEManifest für die --jar-Ausgabe.
--max-errors NAngezeigte Fehler, bevor die übrigen nur gezählt werden; 0 zeigt alle. Warnungen werden dedupliziert und nie begrenzt.
--report-used-deps PATHDie Classpath-Einträge schreiben, auf die die Ausgabe verweist (Bazel Strict Deps).
--capabilitiesCompiler-Fähigkeiten als JSON ausgeben.
--persistent_workerAls persistenter Bazel-Worker laufen, Singleplex oder Multiplex.
--classpath-cacheNur im Worker: Classpath-Zustand über Kompilierungen hinweg wiederverwenden. ELIDE_WORKER_CLASSPATH_CACHE=0 schaltet es ab.
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

Projekte bauen

elide build kompiliert src/main/java und src/test/java oder die Source-Sets, die elide.pkl deklariert. Um nur main zu kompilieren:

elide build compile-java-main
jvm {
  target = 25
  java {
    release = 25
    compiler {
      mode = "embedded"
      flags { "-Xlint:all" }
    }
  }
  features {
    graalvm = false
  }
}
EigenschaftBedeutungStandard
jvm.targetBytecode-Ziel; die --release-Stufe, wenn java.release nicht gesetzt ist."auto" (21)
jvm.java.release--release-Stufe: nur gegen die API dieses JDK kompilieren."auto"
jvm.java.source--source/--target statt --release verwenden; wird ignoriert, wenn release gesetzt ist."auto"
jvm.java.compiler.mode"embedded" verwendet das javac von Elide; "external" startet das aus jvm.javaHome."embedded"
jvm.java.compiler.flagsZusätzliche javac-Flags; --release, -source oder -target ersetzen hier die von Elide.keine
jvm.java.sourceSets["<set>"].release--release-Stufe nur für dieses Source-Set."auto" (die des Projekts)
jvm.java.sourceSets["<set>"].flagsjavac-Flags für dieses Source-Set, nach compiler.flags.keine
jvm.javaHomeJava-Home für externe Kompilierungen und abgezweigte JVMs.das von Elide
jvm.debugMit -g kompilieren.true
jvm.features.graalvmorg.graalvm.nativeimage, word und collections auf den Compile-Classpath legen.false
jvm.features.automodulesJARs ohne Moduldeskriptor als automatische Module auf den Modulpfad legen.true

Ein Source-Set, das andere Einstellungen braucht, etwa eines, das nur gegen java.base kompiliert wird, nennt sie unter sourceSets. Wird ein Source-Set genannt, das das Projekt nicht hat, schlägt der Build fehl.

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

Jede Kompilierung schreibt ihre Argumente in javac.args neben ihrer Ausgabe. Annotationsprozessoren: Maven-Abhängigkeiten.

Persistente Bazel-Worker

elide javac --persistent_worker und elide kotlinc --persistent_worker halten einen Compiler über Bazel-Aktionen hinweg aktiv. Regeln, Einrichtung und ein vollständiges Beispiel: Bazel.

Beispiele

Beginnen Sie mit einer Vorlage:

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

War diese Seite hilfreich?