Erro java.lang.ClassCastException

28/03/2017

0

eu estou carregando a classe servidor de forma dinamica e tentando pegar o socket com retorno para poder usar depois mas fica dando o seguinte erro:
Exception in thread "Thread-3" java.lang.ClassCastException: java.lang.String cannot be cast to java.net.Socket

Segue o codigo a baixo:


    public static Socket servidor(){
        
        Socket conexaoCliente = null;
            try{
    //          JOptionPane.showMessageDialog(null, "lol \\n" + resultados.toString());
                ServerSocket servidor = new ServerSocket(Integer.parseInt(resultados.get(1)));
                System.out.println("A porta " + servidor.getLocalPort() + " esta aberta para conexão");
                System.out.println("Mensagem do servidor: Bom dia/tarde/noite");

                JOptionPane.showMessageDialog(null, "Estou esperando uma conexão");
                conexaoCliente = servidor.accept();
                JOptionPane.showMessageDialog(null, "Estou conectato");
                System.out.println("O cliente" + conexaoCliente.getInetAddress().getHostAddress()+" esta conectado");  

//               Escreve escreve = new Escreve(resultados.get(1), conexaoCliente, nC );
//               new Thread(escreve).start();

//                JOptionPane.showMessageDialog(null, "Olha esse contador: " + nC);
                nC++;
           
        }catch(IOException e){
            System.out.println("Erro: " + e.getMessage());
            
            
        }
    
            return conexaoCliente;
    }



Classe que carrega o servidor:

    public static void carregaComunicação(){
        
            
                caminhoArquivoComunica = new String(suporte.getCaminhoJarComunicacao());
            try{
                
                myJarFile = new URL("file:///"+ caminhoArquivoComunica); 
                URLClassLoader cl = URLClassLoader.newInstance(new URL[]);
                Jarred = cl.loadClass(suporte.getCaminhoPacoteComunica());
                
                simpleWriter = Jarred.getMethod("setParams", new Class[] {String.class});
                JarredObject = Jarred.newInstance();
            
                Object response = simpleWriter.invoke(JarredObject, suporte.getMensagemFinalComunicacao());
                suporte.setServidor((Socket) response);
                JOptionPane.showMessageDialog(null, "=D");
                //JOptionPane.showMessageDialog(null, "mensagem enviada: " + suporte.getMensagemFinalComunicacao() + "\\n caminho especificado" + caminhoArquivoComunica );
            }catch(IllegalArgumentException e){
                System.out.println("Argumentos invalidos1-1: " + e.getMessage());
            }catch(IllegalAccessException ex){
                System.out.println("Acesso negado1-2: " + ex.getMessage());
            }catch(InvocationTargetException erro){
                System.out.println("O metodo nao pode ser invocado1-3: " + erro.getMessage());
            }catch(MalformedURLException e){
                System.out.println("Erro no caminho do arquivo1-4: " + e.getMessage());
            }catch(InstantiationException e){
                System.out.println("Erro ao instanciar o objeto1-5: " + e.getMessage());
            }catch(NoSuchMethodException e){
                System.out.println("Erro ao carregar o metodo1-6: " + e.getMessage());
            }catch(SecurityException ex){
                System.out.println("Erro no tipo do metodo1-7: " + ex.getMessage());
            }catch(ClassNotFoundException e){
                System.out.println("Erro no carregamento do pacote/classe1-8: " + e.getMessage());
            }
        }


Classe que chama o classLoader:


            Thread comun = new Thread(){
            
                Core cor = new Core();
                public void run(){
                    cor.carregaComunicação();
                }
            };

Lucas

Lucas

Responder

Post mais votado

29/03/2017

Esse invoke ta chamando o metodo "setParams", não deveria estar chamando o teu metodo que retorta o socket?

simpleWriter = Jarred.getMethod("setParams", new Class[] {String.class});
JarredObject = Jarred.newInstance();

Object response = simpleWriter.invoke(JarredObject, suporte.getMensagemFinalComunicacao());

Wazowski

Wazowski
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar