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:
Classe que carrega o servidor:
Classe que chama o classLoader:
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
Curtir tópico
+ 0
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
Responder
Clique aqui para fazer login e interagir na Comunidade :)