Java - 让用户编写自己的代码,然后编译它,然后在同一个运行时使用它

Xor*_*rty 5 java compilation on-the-fly

我需要执行以下步骤:

  1. 让用户编写自己的代码 - 没问题,它只是一个实现的接口,我保存了一个文件
  2. 编译它 - 没问题,我使用ToolProvider.getSystemJavaCompiler()并创建了.class文件
  3. 让用户使用这个新代码 - 在这里我被困住了.我有.class文件,现在是什么?我需要以某种方式将它添加到我的项目中,我不知道如何.

感谢帮助!

Boz*_*zho 5

使用a URLClassLoader加载类.然后,您可以使用反射来实例化和操作它们.

  • 一个小小的补充:如果您不想将生成的类文件保存到某个文件,您可以为URLClassLoader提供合适的URLStreamHandlerFactory(以便从内存类文件中读取),或者更简单地使用自己的ClassLoader实现重写`findClass()`. (2认同)