我是否可以构建一个Java源文件,以便在使用javac
进行编译时(但不会使用java
进行调用),它将运行任意代码?
或者我可以假设通过javac
运行任意源文件是安全的吗?
答案 0 :(得分:4)
我从来没有真正使用过这个功能,但是javac可以运行注释处理器 - 我相信这是一个任意的代码。处理器必须位于处理器路径中,默认情况下只是用户类路径。因此,根据您的使用情况,我认为是的,这是一个需要注意的安全问题。您可能希望确保使用-proc:none
禁用注释处理,或采取其他一些预防措施。
答案 1 :(得分:1)
无论源文件的设置方式如何,javac
都无法执行Java。它所要做的就是将java文件编译成类文件。