gpt4 book ai didi

java - 为什么从 java 类调用 java 接口(interface)的 jRuby 实现时会出现 NoMethodError 错误?

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:02 24 4
gpt4 key购买 nike

我遵循了类似问题(链接:How to get from JRuby a correctly typed ruby implementation of a Java interface?)的建议,但这根本没有改变症状。

Java 运行时异常:

org.jruby.exceptions.RaiseException: (NoMethodError) undefined method `doWork' for main:Object

Java执行代码:

    Object worker= engine.get("worker");
MyInterface interfacedWorker = ((Invocable) engine).getInterface(worker,
MyInterface.class);
interfacedWorker.doWork(1,2);

java接口(interface):

public interface MyInterface
{
public void doWork (int a, int b)
}

jRuby 类:

class Worker_31415_2
java_implements 'com.myApp.MyInterface'
def doWork(a, b)
p a, b
end
end
worker=Worker_31415_2.new

最佳答案

您可能应该使用这种形式:-

require 'java'
require_relative 'classes'

class Worker
include com.myApp.MyInterface

java_signature 'doWork(int a, int b)'
def doWork(a, b)
p a, b
end
end

Worker.new.doWork(1, 2)

根据您的示例编译的java接口(interface)的Classes.jar,对我有用!

关于java - 为什么从 java 类调用 java 接口(interface)的 jRuby 实现时会出现 NoMethodError 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36209550/

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