如何在运行时动态编译java类时修复Package not found错误?

时间:2016-11-22 14:32:17

标签: java maven dynamic compilation runtime

我试图在运行时动态编译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文件时也会发生此错误。

你知道如何解决这个问题吗?

0 个答案:

没有答案