Java源文件在编译时是否可以运行任意代码?

时间:2013-03-10 18:32:59

标签: java javac

我是否可以构建一个Java源文件,以便在使用javac进行编译时(但不会使用java进行调用),它将运行任意代码?

或者我可以假设通过javac运行任意源文件是安全的吗?

2 个答案:

答案 0 :(得分:4)

我从来没有真正使用过这个功能,但是javac可以运行注释处理器 - 我相信这是一个任意的代码。处理器必须位于处理器路径中,默认情况下只是用户类路径。因此,根据您的使用情况,我认为是的,这是一个需要注意的安全问题。您可能希望确保使用-proc:none禁用注释处理,或采取其他一些预防措施。

请参阅Annotation Processing section of the Javac manual

答案 1 :(得分:1)

无论源文件的设置方式如何,javac都无法执行Java。它所要做的就是将java文件编译成类文件。