我正在尝试使用外部库中的类型将值绑定到解释器中。
这就是我目前声明我的口译员的方式:
val interpreter = new IMain({
val settings = new Settings
settings.usejavacp.value = true
settings.deprecation.value = true
settings.embeddedDefaults[IMessage]
settings.embeddedDefaults[IChannel]
settings.embeddedDefaults[IGuild]
settings.embeddedDefaults[IUser]
settings
})
// Variable bindings
interpreter.bind("message", "IMessage", event.getMessage)
interpreter.bind("guild", "IGuild", event.getGuild)
interpreter.bind("user", "IUser", event.getAuthor)
interpreter.bind("channel", "IChannel", event.getChannel)
interpreter.interpret(code)
但是,当我执行代码时,我在运行时收到此错误:
<console>:5: error: not found: type IMessage
var value: IMessage = _
^
<console>:6: error: not found: type IMessage
def set(x: _root_.scala.Any) = value = x.asInstanceOf[IMessage]
^
<console>:5: error: not found: type IGuild
var value: IGuild = _
^
<console>:6: error: not found: type IGuild
def set(x: _root_.scala.Any) = value = x.asInstanceOf[IGuild]
^
...
我还试图包含我已声明到解释器范围的对象,我不确定我将如何做到这一点。任何帮助将不胜感激!
我认为您的口译员对该库一无所知。所以你需要一种方法来导入它。其实这个问题已经回答了
请尝试使用完整的限定符路径,例如
interpreter.bind("message", "com.abc.xyz.IMessage", event.getMessage)