动态创建java字节码和可运行的jar

0 java bytecode jar dynamic

我正在制作需要动态创建java字节码的软件,甚至可能使它成为一个可运行的jar.

我目前的想法是创建一个新的.java文件并在运行时编译它.我可以创建文件,但我不确定如何在运行时编译它,并使它成为一个可运行的jar.任何帮助将不胜感激.

public static String generate(String filePath) {
    try {
        File file = new File("Test.java");
        if(!file.exists())file.createNewFile();
        FileWriter write = new FileWriter(filePath+".java");
        BufferedWriter out = new BufferedWriter(write);
        out.write(
                "public class Test {\n\t" +
                    "public static void main(String[] args){\n\t\t"+
                        "System.out.println(\"Working\");\n\t"+
                    "}\n" +
                "}"

                );
        out.close();

    } catch (Exception e) {// Catch exception if any
        return "Error: " + e.getMessage();
    }
    return "Test.java created!";
}
Run Code Online (Sandbox Code Playgroud)

Aar*_*lla 7

要编译Java代码,可以使用Java Compiler API.

要直接生成字节代码,可以使用ASM等工具.

要生成可执行JAR,请创建一个带有声明主类清单JarOutputStream.