Javascript 使用JSR223调用重载静态方法时发生异常

Javascript 使用JSR223调用重载静态方法时发生异常,javascript,nashorn,jsr223,openhab,Javascript,Nashorn,Jsr223,Openhab,我试图使用JSR223()在Javascript中实现openHAB()的规则 有人对以下异常的根本原因提出建议吗?请注意,作为参数传递的两个实例都实现了在方法声明中用作参数的接口 java.lang.RuntimeException: java.lang.NoSuchMethodException: None of the fixed arity signatures [(org.openhab.core.items.Item, org.joda.time.base.AbstractInsta

我试图使用JSR223()在Javascript中实现openHAB()的规则

有人对以下异常的根本原因提出建议吗?请注意,作为参数传递的两个实例都实现了在方法声明中用作参数的接口

java.lang.RuntimeException: java.lang.NoSuchMethodException: None of the fixed arity signatures [(org.openhab.core.items.Item, org.joda.time.base.AbstractInstant)] of method org.openhab.core.persistence.extensions.PersistenceExtensions.changedSince match the argument types [org.openhab.core.items.GroupItem, org.joda.time.DateTime]
        at jdk.nashorn.javaadapters.java.util.function.Consumer.accept(Unknown Source) ~[na:na]
        at java.util.ArrayList.forEach(ArrayList.java:1249) ~[na:1.8.0_31]
        at jdk.nashorn.internal.scripts.Script$\^eval\_.L:13(<eval>:14) ~[na:na]
        at org.openhab.core.jsr223.internal.shared.Rule$$NashornJavaAdapter.execute(Unknown Source) ~[na:na]
        at org.openhab.core.jsr223.internal.engine.RuleExecutionRunnable.run(RuleExecutionRunnable.java:36) ~[na:na]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_31]
被调用的方法已重载,并具有以下签名:

org.openhab.core.persistence.extensions.PersistenceExtensions#changedSince(org.openhab.core.items.Item, org.joda.time.base.AbstractInstant)
org.openhab.core.persistence.extensions.PersistenceExtensions#changedSince(org.openhab.core.items.Item, org.joda.time.base.AbstractInstant, java.lang.String)

在jdk1.8.0_31和jdk1.8.0_65上测试并失败。在Groovy中实现了一个规则,或多或少遇到了一个类似的异常。

我知道在回答这个问题时我是一个巫师,但我偶然发现了它,无法抗拒

错误消息很清楚:您试图使用
GroupItem
调用Java方法

因此应该与方法签名匹配


使用
for each(ItemRegistry.getItems()中的var item){
可以从OpenHab项目定义中获取所有项目,包括所有组。您可能只需要真正的项目。如果(!item.members)请尝试
过滤所有组。

我知道我在回答这个问题时是个巫师,但我无意中发现了它,无法抗拒

错误消息很清楚:您试图使用
GroupItem
调用Java方法

因此应该与方法签名匹配

使用
for each(ItemRegistry.getItems()中的var item){
可以从OpenHab项目定义中获取所有项目,包括所有组。您可能只需要真正的项目。请尝试
如果(!item.members)
筛选所有组

org.openhab.core.persistence.extensions.PersistenceExtensions#changedSince(org.openhab.core.items.Item, org.joda.time.base.AbstractInstant)
org.openhab.core.persistence.extensions.PersistenceExtensions#changedSince(org.openhab.core.items.Item, org.joda.time.base.AbstractInstant, java.lang.String)