Почему, когда я использую LaunchedURLClassLoader, компиляция во время выполнения не работает, команда throw не может найти пакет? - PullRequest
0 голосов
/ 28 декабря 2018
fun testCompile(): Any? {
        val source = "package com.zly.test;\n" +
                "\n" +
                "import com.zly.test.User;\n" +
                "\n" +
                "public class Test {\n" +
                "    \n" +
                "    private User user=new User();\n" +
                "\n" +
                "    public static void main(String[] args){\n" +
                "        System.out.println(\"hello\");\n" +
                "    }\n" +
                "}\n"
        val jdkCompiler = JdkCompiler()
        val clazz = jdkCompiler.compile(source)
        println(clazz)
        return clazz
}

JdkCompiler пришел от dubbo !

Я хочу запустить это в банке, упакованной «spring-boot-maven-plugin», но мне не удалось.Хотя я могу запустить это с помощью метода main.

В «run in springboot jar» и «run in main method» я могу найти разницу в том, что у springboot есть LaunchedURLClassLoader (может иметь дело с «jar in jar»),так что javacFileManager не может знать путь "jar in jar".

Я могу запустить код с помощью другого "maven-shade-plugin", но я хочу запустить это с помощью "spring-boot-maven-plugin"Если добавить код, который поможет javacFileManager справиться с «Jar in Jar».

...