Skip to content

jni-rs/javac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

javac

A library for Cargo build scripts to compile Java source files into .class files. This crate provides a simple builder API similar to the cc crate, making it easy to compile Java code as part of your Rust build process.

This crate does not compile code itself; it calls out to the javac compiler on your system (located via JAVA_HOME or PATH). It will automatically handle cross-platform differences and properly encode file paths.

Usage

First, add javac as a build dependency in your Cargo.toml:

[build-dependencies]
javac = "0.1"

Then, in your build.rs:

fn main() {
    javac::Build::new()
        .file("java/com/example/HelloWorld.java")
        .compile();
}

For more complex scenarios:

fn main() {
    javac::Build::new()
        .files(&["java/Foo.java", "java/Bar.java"])
        .source_dir("java")  // Recursively compile all .java files
        .classpath("lib/dependency.jar")
        .release("11")  // Java 11 compatibility
        .encoding("UTF-8")
        .debug(true)
        .compile();
}

The compiled .class files will be placed in $OUT_DIR/javac-build/classes/ by default, or you can specify a custom output directory with .output_dir().

Requirements

  • A Java Development Kit (JDK) with javac must be installed
  • The javac -verbose output must be compatible with the OpenJDK compiler which includes [wrote /path/to/Name.class] lines, in order to track what .class files are written by the compiler.
  • Either JAVA_HOME environment variable must be set, or javac must be in PATH

Documentation

Refer to the documentation for detailed API documentation.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

A Rust crate for compiling Java code via `javac` in build scripts, similar to the `cc` crate for C/C++ code

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors