Fórum Erro java.lang.ClassCastException #579462
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
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)