我试图在运行时动态编译java类。 java文件在System.getProperty("java.io.tmpdir")
文件夹中生成。当它完成生成时,java文件被编译使用它被删除。我从这个问题中抓住了我的动态编译方法
How do you dynamically compile and load external java classes?
现在,在我的测试类中,它们成功生成,编译和加载但是当我执行mvn:clean install和maven运行测试时,突然之间无法找到生成的类中使用的包。我写的一个测试,调用方法,然后生成这些类,它是一种延迟加载,只有当生成的其他代码需要生成的类时才会生成。
/tmp/java/CH3.java:3: error:
package foo.bar does not exist
import foo.bar.Generated;
/tmp/java/CH3.java:17: error:
cannot find symbol
Generated generated
^
我认为它与ClassLoader或JavaFileManager有关,不包含java文件编译所需的包。
编译器尝试编译java文件时也会发生此错误。
你知道如何解决这个问题吗?