JCompiler
The purpose of this project is to provide a simple API for in-memory compilation of Java code. While the JDK provides a full-blown API for this, in many cases a much simpler API is sufficient.
This project is based on abandoned code by @trung and a reduced version of language utils from VRL.
Using JCompiler
Note: This project needs the full JDK as runtime-dependency to work properly (the JRE does not contain the JavaCompiler API).
Compiling Java classes is as simple as this:
// compile code
CompilationResult result = JCompiler.newInstance().
compile(
"public class MyClass {\n"+
" public static String hello() {\n"+
" return \"hello\";\n"+
" }\n"+
"}"
).checkNoErrors();
// load class and invoke static method
Class<?> myClass = result.loadClasses().get("MyClass");
String msg = (String)myClass.getMethod("hello").invoke(null);
How To Build The Project
1. Dependencies
- JDK >= 8 (tested with JDK 11 and 13)
- Internet Connection (other dependencies will be downloaded automatically)
- Optional: IDE with Gradle support
2. Building
IDE
To build the project from an IDE do the following:
- open the Gradle project
- call the
assemble
Gradle task to build the project
Command Line
Building the project from the command line is also possible.
Navigate to the project folder and call the assemble
Gradle task to build the project.
Bash (Linux/OS X/Cygwin/other Unix-like OS)
cd Path/To/JCompiler
./gradlew assemble
Windows (CMD)
cd Path\To\JCompiler
gradlew assemble