プログラムのオブザーバーに通知するために、このコードを作成しました。しかし、notfyObservers() メソッドを呼び出すと、エラーが発生します。これは Java RMI プログラムです。
IllegalArgumentException: Java での引数の型の不一致
notifyObserver() メソッド:
@Override
public void notifyObservers(JPanel ob) throws RemoteException {
Object[] arrLocal;
synchronized (this) {
if (!changed) {
return;
}
arrLocal = listObs.toArray();
clearChanged();
}
for (int i = arrLocal.length - 1; i >= 0; i--) {
((RemoteObserver) arrLocal[i]).modify(this, ob);
}
}
と呼ばれる..
questionController.notifyObservers(null);
このメソッドを で呼び出しますJPanel
。私のエラーは、jpanel を渡したときです。
java.rmi.MarshalException: error marshalling arguments; nested exception is:
java.io.NotSerializableException: javax.swing.GroupLayout
null を渡した場合、取得しました。
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
前もって感謝します!