Java RMI 客户端遇到 ClassCastException
Java RMI Client experienced ClassCastException
我在将 RMI 客户端连接到服务器时遇到问题。所以我有这些 classes/interfaces :
package application;
import java.sql.ResultSet;
public interface InterfaceRMI {
public void insererEtudiant(String requete);
public void supprimerEtudiant(String requete);
public ResultSet selectionnerEtudiant(String requete);
}
服务器class:
package application;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ServeurMySQL extends UnicastRemoteObject implements InterfaceRMI {
public int port;
public ServeurMySQL(int port) throws RemoteException {
this.port = port;
}
@Override
public void insererEtudiant(String requete) {
// Implementation for insertion
}
@Override
public void supprimerEtudiant(String requete) {
// Implementation for delete
}
@Override
public ResultSet selectionnerEtudiant(String requete) {
// Implementation for selection
}
}
连接测试class:
package application;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class test {
public static void main(String[] args) {
try {
Registry r = LocateRegistry.getRegistry(1098);
InterfaceRMI serveur = (InterfaceRMI) (r.lookup("serveurMySQL"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
当我用 r.lookup("serveurMySQL");
替换行 InterfaceRMI serveur = (InterfaceRMI) (r.lookup("serveurMySQL"));
时,我没有得到异常,我知道连接有效,问题只是转换。但是我不知道怎么解决。
异常如下:
java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to application.InterfaceRMI
at application.test.main(test.java:13)
P.S: RMI 服务器启动没有任何问题。
第一个:
public interface InterfaceRMI
必须
public interface InterfaceRMI extends Remote
第二个:
您 InterfaceRMI
中的每个方法都必须声明 throws RemoteException
我在将 RMI 客户端连接到服务器时遇到问题。所以我有这些 classes/interfaces :
package application;
import java.sql.ResultSet;
public interface InterfaceRMI {
public void insererEtudiant(String requete);
public void supprimerEtudiant(String requete);
public ResultSet selectionnerEtudiant(String requete);
}
服务器class:
package application;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ServeurMySQL extends UnicastRemoteObject implements InterfaceRMI {
public int port;
public ServeurMySQL(int port) throws RemoteException {
this.port = port;
}
@Override
public void insererEtudiant(String requete) {
// Implementation for insertion
}
@Override
public void supprimerEtudiant(String requete) {
// Implementation for delete
}
@Override
public ResultSet selectionnerEtudiant(String requete) {
// Implementation for selection
}
}
连接测试class:
package application;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class test {
public static void main(String[] args) {
try {
Registry r = LocateRegistry.getRegistry(1098);
InterfaceRMI serveur = (InterfaceRMI) (r.lookup("serveurMySQL"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
当我用 r.lookup("serveurMySQL");
替换行 InterfaceRMI serveur = (InterfaceRMI) (r.lookup("serveurMySQL"));
时,我没有得到异常,我知道连接有效,问题只是转换。但是我不知道怎么解决。
异常如下:
java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to application.InterfaceRMI
at application.test.main(test.java:13)
P.S: RMI 服务器启动没有任何问题。
第一个:
public interface InterfaceRMI
必须
public interface InterfaceRMI extends Remote
第二个:
您 InterfaceRMI
中的每个方法都必须声明 throws RemoteException