我正在尝试编写一个允许用户创建“插件”的程序。有点像 Linux bash shell 如何通过将文件放入目录来添加命令,我试图允许用户将他们的代码放入目录中,并让我的程序执行它。
我想到了几种方法来做到这一点:
- 不知何故设法创建了我自己的脚本语言并让用户使用它来编写他们的插件
- 找到一种 Java 支持的现有脚本语言,并使用它供用户编写他们的插件
- 让用户用 Java 编写他们的插件,并在我的程序运行时编译它们。
尽管所有 3 个选项看起来都很糟糕,但这是我能想到的,选项 3 似乎是三个选项中最好的。所以,我做了一些研究,发现 Java 1.6 以后支持文件的运行时编译。但是,如果用户编写的代码引用了我在基本程序中的某些特定类,我不确定编译器是否会失败。通常它会,但由于我的程序正在编译它,我不知道编译器是否允许他们使用基础程序中的类。
理想情况下,我希望这对用户来说尽可能简单。我的主要问题是编译器是否会在我的基础程序中引用类时出现问题。我不想在我的所有类中都包含一个 .jar,并让用户在开发时将其用作库。正如我所说,我希望这对用户来说很容易,理想情况下,它应该尽可能接近解释语言。这就是为什么我想在我的程序运行时这样做,这样用户就不必为编译而烦恼。他们只需要将 .java 文件放在一个目录中并运行我的程序。
如果有人知道编译器是否会对类有问题,或者如果他们知道更好的方法来解决这个问题,那就太好了!
谢谢!