gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:00:22 29 4
gpt4 key购买 nike

我之前问过this question在 StackExchange 上。因为它被搁置了,所以我正在关注评论并询问如何解决这个问题。为了避免重复并复制粘贴解释,请阅读我提出的上一个问题以获取完整的详细信息。

我正在尝试为 Java 编写自己的自定义 ScriptEngine。我尝试扩展 AbstractScriptEngine 并实现 ScriptEngineFactory 并填写所有最低要求的方法,只是为了测试我是否能够至少开始使用脚本。 (参见代码 HERE )当我运行以下代码时...

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();
}

manager.getEngineByExtension("sbs"); 方法返回 null。我还尝试使用 getEngineByMimeType("text/SandboxScript"); 以及 getEngineByName("SandboxScript"); 但这些都不起作用。

我是否设置错误?

最佳答案

自定义脚本引擎的查找是通过服务提供者机制进行的(请参阅 http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#Service%20Provider ),因此必须将其设置为能够按名称查找您的类。在项目的 META-INF 目录中,创建名为“services”的文件夹(如果不存在)。在此文件夹中创建一个名为“javax.script.ServiceEngineFactory”的文件,其中包含包/类的行

me.gamefreak0.ss.SandboxServiceEngineFactory

假设您的项目和 META-INF 设置正确,您的 ScriptEngine 现在应该已注册,并且您应该能够按名称查找它。

关于使用自定义 ScriptEngine 时 Java ScriptEngineManager 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29350731/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com