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
すると、この質問の最初に表示されたエラーが発生します。JGroups jar はクラスパスに適切に追加されているようでorg.jgroups.Channel
、org.jgroups.Channel
(とりわけ) 検出されています。
JGroup 開発者が提供するSimpleChatプログラムがありますが、このために新しいプロジェクトを作成したときに、同じ問題が発生しました。
編集
そのため、CLI から実行するときはクラスパスを明示的に設定する必要があることがわかりました。それでも、コードを実行すると、print ステートメントがないため、getState()
andsetState()
メソッドが呼び出されないように見えます。SimpleChat
意図したとおりに印刷されませんreceived state...
。
誰にも解決策がありますか?
一番。