Por que compila, mas não executa?

Olá amigos!

Qual o por quê do erro de execução quando eu executo um .class gerado de um .java com um nome da classe diferente do nome do arquivo?

Essa pergunta é no sentido de entender o comportamento da JVM :wink:

Abraço.

1 curtida

https://www.caelum.com.br/apostila-java-orientacao-objetos/o-que-e-java/#2-11-executando-seu-primeiro-programa

igomes, obrigado pelo link, mas não respondeu a minha pergunta. Na apostila não é explicado o porquê, mas são apresentados os casos em que ocorrem erro (de compilação ou de execução).

Ao refazer o exercício notei que o .class é gerado não pelo <nome do arquivo>.java, mas sim pelo nome da classe atribuída nesse arquivo propriamente dito.

Assim pude entender o comportamento da JVM: o fato de eu atribuir o nome do arquivo .java só serve para apontar corretamente o arquivo na hora de compilação. O bytecode será gerado conforme o nome da classe que eu atribuir no .java. Ao utilizar o mesmo nome da classe no arquivo .java, pode trazer a falsa sensação de que o .class gerado advém do nome do arquivo .java, o que não é verdade.

:wink:

2 curtidas

Que interessante Samuel, parabéns por ter tido a coragem pra ir atrás de sanar a sua curiosidade. Confesso que eu fiz a mesma indagação quando estudei Java pelo livro do link postado acima e cheguei na mesma conclusão.

Abraços!

1 curtida

Obrigado pelo feedback, João.

Foi minha primeira participação no GUJ. Foi uma experiência interessante procurar por respostas e postar um tópico, pois me condicionou a olhar mais criticamente para o problema.

Nos vemos no topo :wink:

1 curtida