使用apt进行java8 tools.jar注释处理

时间:2015-02-04 14:04:10

标签: compilation annotations runtime java-8

作为java程序员,我们继承了一个现在正在升级到java8的遗留应用程序。该应用程序在我们的应用程序随附的嵌入式jre上运行。

我们还通过App发送tools.jar,用于: 1)在运行时编译.java文件;例如com.sun.tools.javac.Main.compile( “SomeCustomClass.java” ......)。 2)使用apt工具处理注释(包com.sun.mirror.apt);例如'int aptReturnCode = com.sun.tools.apt.Main.process(myAnnotationProcessorFactory ...);

问题是apt工具已从java8中的tools.jar中删除 - > http://docs.oracle.com/javase/7/docs/technotes/guides/apt/GettingStarted.html#deprecated

我们不能使用'JavaCompilerTool compiler = ToolProvider.getSystemJavaCompilerTool()'这样的东西,因为我们只能访问我们的嵌入式jre而且客户端系统上没有jdk。

作为一种解决方法,我们将SomeCustomClass.java编译到外部的jar文件中,然后将其添加到我们应用程序的类路径中,但它不可行,因为这些类来自客户端并且可以一直更改。

我可以考虑以下解决此问题的方法: 1)发送2个tools.jar一个旧的用于注释处理,一个java8用于在运行时编译代码,但不知道如何避免任何命名冲突等。 2)使用注释处理重写myAnnotationProcessorFactory代码以使用javax.annotation。*而不是com.sun.tools.apt。*。由于这是遗留代码,因此非常容易出错。

你们能想到其他任何方法吗?

非常感谢

0 个答案:

没有答案
相关问题