Programa com erro :/

alguem me dá uma ajuda…

class computador
{
    // variaveis de objecto
    final static boolean ligado = true;
    final static boolean desligado = false;
    String marca;
    String processador;
    int memoria_RAM;
    boolean computador_ligado;
    
    //metodo para botão desligar ligar
    
    void botao(boolean accao)
    {
        
        computador_ligado = accao;
    }
    
    
    //Metodo que mostra o estado do computador
    void estado_do_computador()
    {
        System.out.println("Maquina:" + marca + "" + processador + "" + memoria_RAM);
        
        if (computador_ligado == true)
            System.out.println("Computador esta ligado");
        else
            System.out.println("Computador esta desligado");
        
    }
    
    public static void main(String args[]) {
        
    computador comp = new computador();
    
    comp.marca = "HP";
    comp.processador = "AMD";
    comp.memoria_RAM = 512;
    
    comp.estado_do_computador();
    comp.botao(ligado);    
    comp.estado_do_computador();
    comp.botao(desligado);
    comp.estado_do_computador();
    
    }
    
}

ERRO


java.lang.NoClassDefFoundError: examples/Computador (wrong name: examples/computador)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Exception in thread "main" 

Não consigo compreender o erro… este exemplo foi retirado de um livro e ja vi tudo e ta igual ao do livro…

tou a usar Netbeans…

Bom, se estás a desenvolver em Windows, nunca tiveste problemas com ficheiros com letras maiúsculas e minúsculas. Mas é esse o problema - Java foi criado no Unix, portanto ele distingue entre letras maiúsculas e minúsculas. “Computador” é diferente de “computador”.

Deves renomear tua classe para “class Computador” se teu ficheiro chama-se “Computador.java”.

ja o fiz…

foi o que pensei inicialmente

mudei o nome da class para computador pois tinha o ficheiro em computador.java

mas não resultou eliminei criei um novo com o nome computador e não reusltou…

e dá isto novamente

java.lang.NoClassDefFoundError: computador (wrong name: examples/computador)

ao inicio tinha a class Computador, e o ficheiro Computador.java… mas dá sempre esse erro

Dei um Ctrl+C, Ctrl+V no teu código e funcinou belezinha…

Maquina:HPAMD512
Computador esta desligado
Maquina:HPAMD512
Computador esta ligado
Maquina:HPAMD512
Computador esta desligado

Eu refiz o codigo trocando computador po Computador e também deu certo…

Eu acho que o problema deve estar no arquivo.java, como falado.

Por convenção, classes ComeçamComMaiusculas e repare, nada de _ ou " ".
Atributos nãoComecamComLetrasMaiusculas sempreMinusculas
metodos tambemComecamComMinusculas()

se
class computador
o arquivo é o computador.java

se
class Computador
o arquivo é o Computador.java

VELO

Vamos ver… vamos tentar entender as mensagens de erros que vc tá recebendo.

O primeiro:

Quer dizer que vc mandou a java runtime executar a classe “examples.Computador”, mas a classe que a runtime encontrou foi “examples.computador” que são duas coisas diferentes.

Isso acontece quando vc tem uma classe chamada computador no “package” examples mas vc dá(ou seja, a ferramenta que vc tá usando dá) o comando [quote]java …opções… examples.Computador[/quote]

então, o segundo erro:

Quer dizer que vc queria executar a classe “computador”(observe: sem “package” nenhuma - em vez de “examples.computador”) e a runtime só encontrou a classe “examples.computador” que, de novo, não é a mesma coisa.

Isso acontece quando vc tem uma classe chamada computador no “package” examples mas vc dá(ou seja, a ferramenta que vc tá usando dá) o comando [quote]java …opções… computador[/quote]

Então é essa a problem do ponto da vista de java runtime. Eu só tenho JBuilder, não tenho Netbeans e então infelizmente não tenho a solução pra vc… vc pd tentar remover esta classe, e tentar de novo, prestando muita atenção com os pacotes é as letras maiúsculas e minúsculas.

Espero que isso pelo menos ajuda um pouquinho.


Teve um bug em JBuilder… 4?(Não me lembro mais) o efeito qual foi que se vc criava uma classe com nome computador, e depois renomeu pra Computador não funcionava mais. Pelo menos é o que aconteceu comigo. Agora com JBuilder 8-X funciona bem essa tipo de coisa.