Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ScriptEngineManager在使用自定义ScriptEngine时返回null_Java_Scripting_Scriptengine - Fatal编程技术网

Java ScriptEngineManager在使用自定义ScriptEngine时返回null

Java ScriptEngineManager在使用自定义ScriptEngine时返回null,java,scripting,scriptengine,Java,Scripting,Scriptengine,我之前在StackExchange上问过。因为它被搁置了,我正在关注评论并询问如何修复它。为了避免重复我自己和复制粘贴的解释,请阅读前面的问题,我问了完整的细节 我正在尝试为Java编写自己的定制脚本引擎。我尝试扩展AbstractScriptEngine并实现ScriptEngineFactory,并填写所有最低要求的方法,只是为了测试我是否能够至少开始使用脚本。(参见代码)当我运行以下代码时 public static void main(String[] args) { Scrip

我之前在StackExchange上问过。因为它被搁置了,我正在关注评论并询问如何修复它。为了避免重复我自己和复制粘贴的解释,请阅读前面的问题,我问了完整的细节

我正在尝试为Java编写自己的定制脚本引擎。我尝试扩展
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也有类似的特性。