NoSuchMethodException? pq?

5 respostas
Sorriso

Bom dia pessoal, estou com a seguinte dúvida...

meu código abaixo gera o seguinte erro >>>

0 [main] ERROR br.com.it7.main.Main  - java.lang.NoSuchMethodException: br.com.it7.string.Utils.getFirstName()
java.lang.NoSuchMethodException: br.com.it7.string.Utils.getFirstName()
	at java.lang.Class.getMethod(Unknown Source)
	at br.com.it7.main.Main.main(Main.java:34)

Alguem poderia me ajudar??

package br.com.xMan.main;

import java.lang.reflect.Method;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

import br.com.string.Utils;

public class Main {

	static{
		
		BasicConfigurator.configure();
		
	}
	
	 private static Logger logger = Logger.getLogger(Main.class);
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		Utils utils = new Utils();

		try {
			
			String className = args[0];
			String metodo = args [1];
			
			Class<?> classe = Class.forName(className);
			Method met = classe.getMethod(metodo);
			met.invoke(utils);

		} catch (Exception e) {
			logger.error(e, e.getCause());
		}
	}
}

5 Respostas

D

cara coloca a tua classe Utils ae tb… a principio parece que o metodo getFirstName nao existe nela (é o q o erro parece dizer) … coloca a classe pra gente ver e tentar ajudar mais…

editado:: coloca tb os parametros q tu tá passando

[]´s

Sorriso

didiosam:
cara coloca a tua classe Utils ae tb… a principio parece que o metodo getFirstName nao existe nela (é o q o erro parece dizer) … coloca a classe pra gente ver e tentar ajudar mais…

editado:: coloca tb os parametros q tu tá passando

[]´s

Bom didiosam, obrigado pela ajuda, pois na sua pergunta achei o meu erro…hehe…

na minha Utils por exemplo tinha o método

public static String getFirstName(String fullName){

blááá........

return firstName

}

e estava invocando, um método assim…

public static String getFirstName(){

blááá........

return firstName

}

sem parâmetro, o que gerava este erro…

Vlw for Help!!! 8) 8) 8)

D

opa, massa cara :slight_smile:

precisando eh soh pedi ae…

[]´s

thiagomrossi

Alguém pode me ajudar?
Seguinte tenho um arquivo .java gerado, em um diretório qualquer gostaria de compilar e executar em tempo de execução é possível?

O método de compilação, aparentemente está funcionando.

private void Compilar() 
        { 
            try {
                /* deixa um log da compilacao num arquivo chamado logCompilacao.txt */
                PrintWriter saida = new PrintWriter(new FileWriter("logCompilacao.txt")); 
                /* grava o codigo-fonte no disco */
                String arquivoFonte = diretorio+"/"+nome_arquivo;
                FileWriter arq = new FileWriter(arquivoFonte); 
                arq.write(ta_codigoJava.getText()); //grava no arquivo o codigo
                arq.close(); 
                /* agora sim compila, onde entra a grande sacada 
                * de utilizar o compilador Java da Sun.
                * saida é onde sera gravada a saida do compilador (erros por exemplo), 
                * em vez de usar a saída padrão System.out
                * */
                int resultadoCompilacao = com.sun.tools.javac.Main.compile( 
                new String[]{arquivoFonte},saida); 
                if (resultadoCompilacao == 0) {
                    ta_log_compilacao.append("Compilado com sucesso."); 
                    try {
                        Executar();
                    } catch (InstantiationException ex) {
                        Logger.getLogger(frmGeraAppJava.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (NoSuchMethodException ex) {
                        Logger.getLogger(frmGeraAppJava.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IllegalAccessException ex) {
                        Logger.getLogger(frmGeraAppJava.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IllegalArgumentException ex) {
                        Logger.getLogger(frmGeraAppJava.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (InvocationTargetException ex) {
                        Logger.getLogger(frmGeraAppJava.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
                else
                {
                    /* le o arquivo de resultados e imprime na tela */
                    BufferedReader result = new BufferedReader( 
                    new FileReader("logCompilacao.txt")); 
                    String linha; 
                    while((linha=result.readLine())!=null) 
                    {
                        ta_log_compilacao.append(linha+"\n"); 
                    }
                 }
                 saida.close(); 
            } catch(IOException ioe) {
                System.out.println("Erros ao gravar arquivo: \n"+ioe.getMessage()); 
                ioe.printStackTrace(); 
            } 
        }

Já o método de executar o .class gerado não funciona de jeito nenhum.

private void Executar() throws InstantiationException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        try {  
                   java.lang.ClassLoader abrir = new java.net.URLClassLoader(new java.net.URL[] {new File(diretorio).toURL()}); 
                   Class c = abrir.loadClass(nome_tabela);     
                   Method m = c.getMethod("main", null);     
                   m.invoke(null, null);
        } catch (Exception e) {  
            e.printStackTrace();  
        } 
        }

Alguém tem alguma idéia?

bobmatta

thiagomrossi cara, abre um tópico com a sua dúvida!

Criado 29 de junho de 2009
Ultima resposta 22 de mai. de 2013
Respostas 5
Participantes 4