Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    50

    ClassCastException java RMI

    Salve a tutti
    Ho un problema che non riesco a risolvere =(

    quando eseguo il codice al momento che richiamo un metodo remoto ho questo errore:

    java.lang.ClassCastException: cannot assign instance of $Proxy1 to field Classi.info_client.cb_client of type Client.cb_client_implements in instance of Classi.info_client
    at java.io.ObjectStreamClass$FieldReflector.setObjFie ldValues(ObjectStreamClass.java:2049)
    at java.io.ObjectStreamClass.setObjFieldValues(Object StreamClass.java:1229)
    at java.io.ObjectInputStream.defaultReadFields(Object InputStream.java:1969)
    at java.io.ObjectInputStream.readSerialData(ObjectInp utStream.java:1887)
    at java.io.ObjectInputStream.readOrdinaryObject(Objec tInputStream.java:1770)
    at java.io.ObjectInputStream.readObject0(ObjectInputS tream.java:1346)
    at java.io.ObjectInputStream.readObject(ObjectInputSt ream.java:368)
    at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRe f.java:324)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastSe rverRef.java:307)
    at sun.rmi.transport.Transport$1.run(Transport.java:1 77)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport. java:173)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages( TCPTransport.java:553)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandl er.run0(TCPTransport.java:808)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandl er.run(TCPTransport.java:667)
    at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceiv edFromServer(StreamRemoteCall.java:273)
    at sun.rmi.transport.StreamRemoteCall.executeCall(Str eamRemoteCall.java:251)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:1 60)
    at java.rmi.server.RemoteObjectInvocationHandler.invo keRemoteMethod(RemoteObjectInvocationHandler.java: 194)
    at java.rmi.server.RemoteObjectInvocationHandler.invo ke(RemoteObjectInvocationHandler.java:148)
    at $Proxy0.register(Unknown Source)
    at Client.Main_client.main(Main_client.java:153)


    ho controllato che tutti i tipi coincidano e non faccio nessun tipo di cast

    non sò più dove sbattere la testa, qualcuno può aiutarmi??

    Grazie mille! =)

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    50
    Posto il codice dove ho l'errore!!

    public class Main_client {

    private static int udp_server_port = 5555;
    private static int RMI_registry_port = 1099;
    private static String host_server = "localhost";
    private static String cwd;
    private static String multicast_group = "226.226.226.226";
    private static ArrayList<ide_client> clients_online;
    private static ServerSocket socket_tcp;
    private static String name = "p2p";
    private static String nomeF = "Comando1";
    private static MulticastSocket mc = null;
    private static int mc_port = 7777;
    private static final long serialVersionUID = 1L;
    private static remote_server_method server;
    private static info_client CB;
    private static ide_client id;
    private static cb_client_implements callback;
    private static Registry registry;

    public static void main(String[] args) {

    InetAddress group, h_server;

    if (args.length == 0 || !args_parsing(args))
    System.exit(0);

    try {

    group = InetAddress.getByName(multicast_group);
    input.println("group: "+group);
    h_server = InetAddress.getByName(host_server);
    input.println("server: "+h_server);

    } catch (UnknownHostException e1) {
    e1.printStackTrace();
    return;
    }

    boolean portFound = false;
    int portNumber = 0;
    clients_online = new ArrayList<ide_client>();

    try {
    do {
    portNumber = (int) ((65535 - 1024 + 1) * Math.random()) + 1024;
    try {
    socket_tcp = new ServerSocket(portNumber);
    portFound = true;
    } catch (Exception e) {
    portFound = false;
    }
    } while (!portFound);

    InetAddress ip = null;
    Enumeration<NetworkInterface> n = NetworkInterface
    .getNetworkInterfaces();
    while (n.hasMoreElements()) {
    Enumeration<InetAddress> ips = n.nextElement()
    .getInetAddresses();
    while (ips.hasMoreElements()) {
    ip = ips.nextElement();
    if (!ip.isLoopbackAddress())
    break;
    }
    }

    id = new ide_client(ip, portNumber);

    registry = LocateRegistry.getRegistry(host_server,
    RMI_registry_port);
    server = (remote_server_method) registry
    .lookup(name);
    callback = new cb_client_implements(
    clients_online);
    CB = new info_client(callback);

    input.println("Registrazione---> id: "+id+" CB: "+CB);
    clients_online = server.register(id, CB); --------------------> Qui ho l'errore!! register è un metodo remoto

    mc = new MulticastSocket(mc_port);
    input.println("MC: "+mc);

    Thread Tk_alive = new Thread(new t_keep_alive(id, h_server,
    udp_server_port));
    Thread Tmc = new Thread(new t_receive_mc_client(group, mc,
    clients_online));
    Thread Tre = new Thread(new task_reader(cwd + nomeF, server, id,
    mc, group, socket_tcp, cwd, mc_port));

    input.println("keep_alive attivo");
    Tk_alive.start();
    input.println("multicast recever attivo");
    Tmc.start();
    input.println("reeder attivo");
    Tre.start();

    } catch (NotBoundException e) {
    e.printStackTrace();
    return;
    } catch (HostAlredyDefined e) {

    } catch (SocketException e) {

    } catch (RemoteException e) {
    e.printStackTrace();
    return;
    } catch (Exception e) {
    e.printStackTrace();
    return;
    }
    }
    }

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Usa il tag CODE, come indicato nel Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    e potevi anche evidenziare in qualche modo la riga in cui si genera l'errore.
    cmq anche se tu esplicitamente non fai cast, un cast viene fatto e te lo dice qui

    codice:
    java.lang.ClassCastException: cannot assign instance of $Proxy1 to field Classi.info_client.cb_client of type Client.cb_client_implements in instance of Classi.info_client
    prova a ricontrollare l'operazione che fai nella riga incriminata, che dal codice scritto cosi è difficile dedurre

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.