在Hazelcast 3.4中,我使用带有时间参数的IQueue商品获得NoSuchMethodError异常。它在Hazelcast 3.2中运行良好。代码编译并运行,但是当它执行offer时,它会抛出异常。
这是BlockingQueue的方法签名:
public boolean offer(E e,long l,TimeUnit tu)抛出InterruptedException;
IQueue<GLBCSchema> queue=hzMQUtils.getQueue("myQueueName"); ... GLBCSchema tmpMsg=new GLBCSchema(); //queue.offer(tmpMsg); <=== works! queue.offer(tmpMsg, 3, TimeUnit.SECONDS); <== throws NoSuchMethodError
Exception in thread "main" java.lang.NoSuchMethodError: com.hazelcast.core.IQueue.offer(Lgblx/gis/rtapi/facade/internal/GLBCSchema;JLjava/util/concurrent/TimeUnit;)Z
这是一个错误还是Hazelcast删除了此优惠方法?
THX!
答案 0 :(得分:0)
没关系。我想到了。删除类型声明后,它就可以了。
自:
IQueue<GLBCSchema> queue=hzMQUtils.getQueue("myQueueName");
要:
IQueue queue=hzMQUtils.getQueue("myQueueName");
我不确定他们为什么要做这个改变。 (关于JDK https://bugs.openjdk.java.net/browse/JDK-8064803的参考错误)