Compilation java8 tools.jar注释处理与apt

Compilation java8 tools.jar注释处理与apt,compilation,annotations,runtime,java-8,Compilation,Annotations,Runtime,Java 8,作为java程序员,我们继承了一个遗留应用程序,该应用程序现在正在升级到java8。该应用程序运行在我们的应用程序附带的嵌入式jre上 我们还随应用程序一起提供tools.jar,用于: 1) 在运行时编译.java文件;e、 g.com.sun.tools.javac.Main.compile(“SomeCustomClass.java”…)。 2) 使用apt工具(包com.sun.mirror.apt)处理注释;e、 g.'int aptReturnCode=com.sun.tools.a

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

我们还随应用程序一起提供tools.jar,用于: 1) 在运行时编译.java文件;e、 g.com.sun.tools.javac.Main.compile(“SomeCustomClass.java”…)。 2) 使用apt工具(包com.sun.mirror.apt)处理注释;e、 g.'int aptReturnCode=com.sun.tools.apt.Main.process(myAnnotationProcessorFactory…)

问题是apt工具已经从java8->tools.jar中删除

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

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

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

你们能想出其他办法吗


非常感谢

ToolProvider.getSystemJavaCompilerTool()
使用查找实现。这意味着如果您已将
tools.jar
添加到类路径中,则查找应该会成功。当您使用java-8编译器时,不需要额外的
apt
,因为注释处理已经包含在内。您的意思是说不需要这种类型的处理->'int-aptReturnCode=com.sun.tools.apt.Main.process(myAnnotationProcessorFactory;猜猜为什么
apt
被删除了?但是,当然,您必须使用
javax.annotation.processing
包,但任何其他“解决方案”都只是一个拼凑。