我在建立项目后运行它会产生以下错误的JGroups问题:Caused by: java.lang.ClassNotFoundException: org.jgroups.ReceiverAdapter
我的课看起来像这样-
import org.jgroups.ReceiverAdapter;
import org.jgroups.Channel;
import org.jgroups.JChannel;
public class MyClass extends ReceiverAdapter implements MyInterface {
Channel channel;
String state = "state";
public MyClass() {
super();
start();
}
public void start() {
try {
channel = new JChannel();
channel.setReceiver(this);
channel.connect("ServerCluster");
channel.getState(null, 0);
System.out.println("Connected to cluster");
} catch (Exception e) {
System.out.println("Failed to connect to cluster");
}
}
public void getState(OutputStream output) throws Exception {
System.out.println("get response");
}
public void setState(InputStream input) throws Exception {
System.out.println("set test");
}
}
从IntelliJ运行项目不会产生任何错误,但也不会从
getState()
和setState()
产生所需的打印。我尝试在Eclipse IDE中创建一个全新的项目,但是同样的事情也在发生。连接一直运行良好,状态是我项目的新增功能。从命令行运行
java MyClass
会引发在此问题开始时看到的错误。当找到org.jgroups.Channel
和org.jgroups.Channel
(以及其他)时,JGroups jar似乎已正确添加到类路径中。JGroup开发人员提供了一个SimpleChat程序,但是当我为此创建一个新项目时,遇到了相同的问题。
编辑
因此事实证明,从CLI运行时,我必须显式设置类路径。但仍然,当运行代码时,似乎似乎没有调用
getState()
和setState()
方法,因为没有打印语句。 SimpleChat
不会像预期那样打印received state...
。有没有人有办法解决吗?
最好。
最佳答案
因此,在JChannel上,我使用的是RpcDispatcher,看来我不能在同一通道上使用调度程序以及getState()
和setState()
方法。简单的解决方案:创建第二个渠道。似乎缺乏对JGroups基础知识的了解!
关于java - 具有JGroups的ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20485290/