1

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

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

4

2 回答 2

4

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

请参阅Javac 手册的注释处理部分

于 2013-03-10T19:26:07.127 回答
1

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

于 2013-03-10T18:43:57.617 回答