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

标签 java javac

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

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

最佳答案

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

参见 Annotation Processing section of the Javac manual .

关于java - Java 源文件是否可以在编译时运行任意代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15325946/

相关文章:

java - StandardServiceRegistry 在 Hibernate 4 中的重要性是什么?

utf-8 - 使用 BOM 编译 (javac) UTF8 编码的 Java 源代码

java - 尽管进行了多次尝试,但链接外部 jar 文件时出现问题

javac 意外地扩展了我的类路径中发现的 jar

java - 为什么 javac -proc :only option still parse java files when class files already exist?

java - 如何向 JTree 添加鼠标监听器,以便我可以在将鼠标悬停在节点上时更改光标(变为手形光标)?

java - 将 float 数组保存到SD卡(java)

javac 源和目标选项

java - 在 doInBackground 方法中使用比较器对 ArrayList 进行排序时出错

java - 如何在请求对象中调用 setParameter?