为什么当我使用LaunchedURLClassLoader时,运行时编译不起作用,抛出找不到包?

时间:2018-12-28 08:29:02

标签: spring-boot classloader javac urlclassloader

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”包装的jar中运行它,但是我失败了。尽管我可以使用main方法来运行它。

我可以在“在springboot jar中运行”和“在主要方法中运行”之间找到区别,就是springboot具有LaunchedURLClassLoader(可以处理“ jar中的jar”),因此javacFileManager无法知道路径“ jar中的jar”

我可以通过使用另一个“ maven-shade-plugin”来运行代码,但是如果添加一些有助于javacFileManager处理“ Jar in Jar”的代码,我想通过“ spring-boot-maven-plugin”来运行代码。 / p>

0 个答案:

没有答案