我正在执行api时动态创建文件,
代码如下:
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnosticsCollector, null, null);
fileManager.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(Constants.PROCESSING_SCRIPTS_LOCATION)));
List<String> optionList = new ArrayList<String>();
optionList.addAll(Arrays.asList("-classpath", "--location of jar separated by :--"))
CompilationTask compilerTask = compiler.getTask(null, fileManager, diagnosticsCollector,
optionList, null, fileManager.getJavaFileObjectsFromFiles(Arrays.asList(sourceFile)));
与“ mvn spring-boot:run”一起使用时,此方法完全可以正常工作。
但是当我们创建应用程序之战并将其放入tomcat容器时,它对那里的所有内部代码(我们的应用程序)引用都不起作用,它说:“包...不存在”。
在调用“ compiler.getTask”之前,我们尝试设置诸如将应用程序war放置在lib(tomcat目录)中或在类路径上添加更多的jar / war之类的东西,但均无济于事。请让我们知道这里可以做些什么。