我正在尝试编写一个允许用户创建“插件”的程序。有点像Linux bash shell可以通过将文件放在目录中来添加命令,我试图让用户将他们的代码放在一个目录中,并让我的程序执行它。
我想到了几种方法:
虽然所有3个选项看起来都很糟糕,但这是我能想到的全部,而选项3似乎是三者中最好的。所以,我做了一些研究,发现Java 1.6以后支持文件的运行时编译。但是,如果用户编写的代码引用了我在基本程序中的一些特定类,我不确定编译器是否会失败。通常它会,但由于我的程序正在编译它,我不知道编译器是否允许它们使用基本程序中的类。
理想情况下,我希望用户尽可能轻松。我的主要问题是编译器是否会在我的基本程序中引用类时出现问题。我不希望在我的所有类中包含.jar,并且让用户在开发时将其用作库。正如我所说,我希望这对用户来说很容易,理想情况下,它应该尽可能接近解释语言。这就是为什么我想在我的程序中在运行时执行此操作,以便用户不必费心进行编译。他们只需要将.java文件放在一个目录中并运行我的程序。
如果有人知道编译器是否会遇到类的问题,或者他们知道更好的方法,那就太棒了!
谢谢!
答案 0 :(得分:1)
Java应用程序的大多数插件都是用Java编写的。插件是一项棘手的业务,因为它们暴露了许多潜在的坏事。
如果要将脚本语言编译为Java,那么确定。你必须:
如果使用当前加载的相同API jar编译目标* .java,则类引用应该没有问题。不要在SUB CLASSLOADER中加载API JAR,因为会发生类类型错误。
查看LuaJava的脚本引擎。