Java ScriptEngineManager在使用自定义ScriptEngine时返回null
我之前在StackExchange上问过。因为它被搁置了,我正在关注评论并询问如何修复它。为了避免重复我自己和复制粘贴的解释,请阅读前面的问题,我问了完整的细节 我正在尝试为Java编写自己的定制脚本引擎。我尝试扩展Java ScriptEngineManager在使用自定义ScriptEngine时返回null,java,scripting,scriptengine,Java,Scripting,Scriptengine,我之前在StackExchange上问过。因为它被搁置了,我正在关注评论并询问如何修复它。为了避免重复我自己和复制粘贴的解释,请阅读前面的问题,我问了完整的细节 我正在尝试为Java编写自己的定制脚本引擎。我尝试扩展AbstractScriptEngine并实现ScriptEngineFactory,并填写所有最低要求的方法,只是为了测试我是否能够至少开始使用脚本。(参见代码)当我运行以下代码时 public static void main(String[] args) { Scrip
AbstractScriptEngine
并实现ScriptEngineFactory
,并填写所有最低要求的方法,只是为了测试我是否能够至少开始使用脚本。(参见代码)当我运行以下代码时
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByExtension("sbs"); // <- THIS LINE HERE
System.out.println(engine);
try {
System.out.println(engine.eval("STRING!"));
} catch (ScriptException e) {
e.printStackTrace();
}
publicstaticvoidmain(字符串[]args){
ScriptEngineManager管理器=新建ScriptEngineManager();
ScriptEngine engine=manager.GetEngineeByExtension(“sbs”);//自定义脚本引擎的查找是通过服务提供程序机制进行的(请参阅),因此必须将其设置为能够按名称查找类。在项目的META-INF目录中,如果不存在名为“services”的文件夹,请创建该文件夹中包含包/类行的名为“javax.script.ServiceEngineFactory”的文件
me.gamefreak0.ss.SandboxServiceEngineFactory
假定您的项目和META-INF设置正确,您的脚本引擎现在应该已注册,您应该可以按名称查找它。有没有办法从IntelliJ IDEA的运行配置内部执行此操作?我不使用该IDE,因此无法直接指导您,但是使用Eclipse您可以添加META-INF(或其他目录)我想IntelliJ IDEA也有类似的特性。