Duvidas e Ajuda

9 respostas
kraizeshark

Opa.
Tem programa que eu faço que rodam uma beleza, tem outros que dao esse aviso:
Exception in thread “main” java.lang.NoSuchMethodError: main
Porque??
Como Solucionar??
Agradeço desde ja.

9 Respostas

Ironlynx

Cadê o método main nesses seus outros programas?Pois ele naum estah lah… :wink:

martui

:scrambleup: Na verdade, o que a classe que você está tentando executar não tem é um método main que siga as exigências para que sua classe seja executável.

:arrow: Você pode ter:

public void main (String[] args)

ou

public static void main (String args)

e sua classe vai compilar normal, só não vai rodar como uma main class pois não tem um método main com a assinatura correta para que a classe possa ser executada. Essas duas assinaturas aí em cima fazem com que esse método main seja um método comum e não O MÉTODO main.

As assinaturas válidas de main para tornar a classe executável são:

public static void main(String[] args) e suas variações válidas (trocar a ordem de static e public ou trocar o nome do argumento args)

P

Se ainda não conseguiu posta o código aí pra gente dar uma olhada

kraizeshark

Valeu Galerinha…
Era uma duvida minha.
Sou iniciante em Java, to aprendendo na faculdade.
Acho Java uma linguagem bem interessante e estou disposto a aprende-la sozinho, pois não tenho $$$ para um curso.
Falando em faculdade, tenho um trabalho integrado para entregar, e o meu grupo esta falando sobre Segurança de Condominio, estou entando montar um programinha que faça o cadastros das pessoas que entram.
O codigo do meu programinha tah assim:(tah simples mas tah valendo)

import java.awt.<em>;

import javax.swing.</em>;

import java.awt.event.*;

public class cadastro

{

static JFrame janela = new JFrame(Shoxy´s Seguança de Condominios);

public static void main(String args[])
{
	janela.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	FlowLayout flow = new FlowLayout();
	Container caixa = janela.getContentPane();
	caixa.setLayout(flow);
	janela.setVisible(true);
			
	JLabel lbLabel01 = new JLabel("Nome: ");
	caixa.add(lbLabel01);
	
	JTextField nom = new JTextField( 25 );
	caixa.add(nom);
			
	JRadioButton visitante = new JRadioButton("Visitante");
	JRadioButton morador = new JRadioButton("Morador");
	caixa.add(visitante);
	caixa.add(morador);
	
	
	
	JLabel lbLabel02 = new JLabel("Rg. :");
	caixa.add(lbLabel02);
	
	JTextField reg = new JTextField( 8 );
	JLabel tra = new JLabel("-");
	JTextField dig = new JTextField( 1 );
	caixa.add(reg);
	caixa.add(tra);
	caixa.add(dig);
	
	
	
	JLabel lbLabel03 = new JLabel("Endereço: ");
	JTextField end = new JTextField(30);
	caixa.add(lbLabel03);
	caixa.add(end);
	
	
	JLabel lbLabel04 = new JLabel("CEP: ");
	JTextField cep = new JTextField( 5 );
	JLabel tras = new JLabel("-");
	JTextField cepp = new JTextField( 3 );
	caixa.add(lbLabel04);
	caixa.add(cep);
	caixa.add(tras);
	caixa.add(cepp);
	
	JLabel lbLabel05 = new JLabel("Horario de Entrada: ");
	JLabel lbLabel06 = new JLabel("Apartamento: ");
	JTextField ent = new JTextField( 5 );
	JTextField apt = new JTextField( 5 );
	caixa.add(lbLabel05);
	caixa.add(ent);
	caixa.add(lbLabel06);
	caixa.add(apt);
			
	
	JButton btok = new JButton(" Cadastrar ");
	JButton btcancel = new JButton(" Apagar Cadastro ");
	caixa.add(btok);
	caixa.add(btcancel);
	
	
	
		
}

}

aceito sugestoes para o mesmo
Agradeço desde ja.

Ironlynx
ponha um método main() como o martui lhe explicou e crie uma instância da sua classe(uma ocorrencia em memoria dela) por ex:

main(String[] args){

new Cadastro();     }

<img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:">
kraizeshark

Poxa, Desculpa minha ignorancia mas aonde eu coloco isso???Para que serve???
Valew

Ironlynx
Poxa, Desculpa minha ignorancia mas aonde eu coloco isso???Para que serve??? Valew
Cara,foi mal..eu não vi q tinha um método main aí no meio escondido! Pelo q eu estou vendo,tah faltando vc setar o tamanho do frame!Por ex.: janela.setSize(700,150); cara,esse seu código tah criando tudo dentro do main... Vc tem q tomar cuidado com os gerenciadores de Layout,para ver se lhe atendem(to vendo um monte de comp num FlowLayout se vc errar o tam-o tam q eu pûs é um mero chute!-os componentes ficarão bagunçados na tela se esse gerenciador não servir!-classe começa com maiúscula! olha uma modificada rápida e tenta entender:
import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

public class Cadastro{

 JFrame janela; 
 
 public Cadastro(){
 	exibirTela();//quando uma instancia for criada,esse metodo  sera chamado!
 } 

 public Container organizaComponentes(){
   FlowLayout flow = new FlowLayout(); 
     Container caixa = janela.getContentPane(); 
     caixa.setLayout(flow);       

JLabel lbLabel01 = new JLabel("Nome: "); 
caixa.add(lbLabel01); 

JTextField nom = new JTextField( 25 ); 
caixa.add(nom); 

JRadioButton visitante = new JRadioButton("Visitante"); 
JRadioButton morador = new JRadioButton("Morador"); 
caixa.add(visitante); 
caixa.add(morador); 

JLabel lbLabel02 = new JLabel("Rg. :"); 
caixa.add(lbLabel02); 

JTextField reg = new JTextField( 8 ); 
JLabel tra = new JLabel("-"); 
JTextField dig = new JTextField( 1 ); 
caixa.add(reg); 
caixa.add(tra); 
caixa.add(dig);

JLabel lbLabel03 = new JLabel("Endereço: "); 
JTextField end = new JTextField(30); 
caixa.add(lbLabel03); 
caixa.add(end); 


JLabel lbLabel04 = new JLabel("CEP: "); 
JTextField cep = new JTextField( 5 ); 
JLabel tras = new JLabel("-"); 
JTextField cepp = new JTextField( 3 ); 
caixa.add(lbLabel04); 
caixa.add(cep); 
caixa.add(tras); 
caixa.add(cepp); 

JLabel lbLabel05 = new JLabel("Horario de Entrada: "); 
JLabel lbLabel06 = new JLabel("Apartamento: "); 
JTextField ent = new JTextField( 5 ); 
JTextField apt = new JTextField( 5 ); 
caixa.add(lbLabel05); 
caixa.add(ent); 
caixa.add(lbLabel06); 
caixa.add(apt); 


JButton btok = new JButton(" Cadastrar "); 
JButton btcancel = new JButton(" Apagar Cadastro "); 
caixa.add(btok); 
caixa.add(btcancel); 

return caixa;	
}

public void exibirTela(){
	janela = new JFrame("Shoxy´s Seguança de Condominios"); 
	janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	janela.setContentPane(this.organizaComponentes());
	janela.setSize(700,150);
	//centraliza o frame na tela
    janela.setLocationRelativeTo(null);
    //mostra a janela.
	janela.setVisible(true);
	
}

public static void main(String args[]) {
   new Cadastro();//cria uma instancia da classe em memoria
 } 
}

Leia os tutoriais do Guj,daqui:
http://www.caelum.com.br/fj.jsp
e daqui:
http://java.blogger.com.br/
Se ler 80% deles e dominar a metade do q leu,parabéns,nem eu consegui! :D (huhauah)
Brincadeiras á parte,estude cara,com esses links q te passei jah dah para brincar legal com java! :wink:

P

serve pra deixar teu código mais organizado…

kraizeshark

Ironlynx,
Muito obrigado pela sua ajuda, to lendo a forma modificada e to entendendo.
Aos pouco eu chego lá.
Valew.

Criado 7 de outubro de 2004
Ultima resposta 8 de out. de 2004
Respostas 9
Participantes 4