# javaCompiler **Repository Path**: gitcrazy/javaCompiler ## Basic Information - **Project Name**: javaCompiler - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2017-05-10 - **Last Updated**: 2022-07-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # compiler Compile Java code in memory using Java 6 compiler API. [![Build Status](https://travis-ci.org/michaelliao/compiler.svg?branch=master)](https://travis-ci.org/michaelliao/compiler) ### Why compiler API? You can use compiler API to compile generated Java source code and load the compiled classes on-the-fly. For example, generate proxy classes using compiler API instead of CGLIB or Javassist. ### How to use this compiler? Step 1: add maven dependency: ``` com.itranswarp compiler 1.0 ``` Step 2: compile string and load class: ``` public class Main { public static void main(String[] args) { JavaStringCompiler compiler = new JavaStringCompiler(); Map results = compiler.compile("UserProxy.java", JAVA_SOURCE_CODE); Class clazz = compiler.loadClass("on.the.fly.UserProxy", results); // try instance: User user = (User) clazz.newInstance(); } static final String JAVA_SOURCE_CODE = "/* a single java source file */ " + "package on.the.fly; " + "public class UserProxy extends test.User { " + " boolean _dirty = false; " + " public void setId(String id) { " + " super.setId(id); " + " setDirty(true); " + " } " + " public void setName(String name) { " + " super.setName(name); " + " setDirty(true); " + " } " + " public void setCreated(long created) { " + " super.setCreated(created); " + " setDirty(true); " + " } " + " public void setDirty(boolean dirty) { " + " this._dirty = dirty; " + " } " + " public boolean isDirty() { " + " return this._dirty; " + " } " + "} "; } ```