[RESOLVIDO] Problemas com método Main

Boa tarde,

Estou iniciando os estudos de Java e estou com um problema ao compilar esse codigo. Segue o código abaixo:

class Turma {
	Aluno[] alunos;
	
	void imprimeNotas() {
		for(int i = 0; i < this.alunos.length; i++) {
			Aluno aluno = this.alunos[i];
			if (aluno == null) continue;
			System.out.println(aluno.nota);
		}
	}
}

class Aluno {
	String nome;
	int nota;
}

class TesteDaTurma {
	
	public static void main (String[] args) {
		Turma fj11 = new Turma();
		fj11.alunos = new Aluno[10];
		fj11.alunos[0] = new Aluno();
		fj11.alunos[0].nome = "Mauricio";
		fj11.alunos[0].nota = 9;
		fj11.alunos[1] = new Aluno();
		fj11.alunos[1].nome = "Rodrigo";
		fj11.alunos[1].nota = 8;
		fj11.alunos[2] = new Aluno();
		fj11.alunos[2].nome = "Cezar";
		fj11.alunos[2].nota = 10; 
		fj11.imprimeNotas();
	}
}

Creio que fiz igual na videoaula da Alura, mas da esse erro abaixo.

Erro: o método main não foi encontrado na classe Turma; defina o método main como:
   public static void main(String[] args)
ou uma classe de aplicativo JavaFX deve expandir javafx.application.Application

Duvida, o metodo main tem que estar dentro da classe Turma? Não pode estar fora das chaves? Se sim, então devo colocar a classe Aluno dentro da classe Turma?

Copiei e colei seu código:

package Principal;

class Turma {

    Aluno[] alunos;

    void imprimeNotas() {
        for (int i = 0; i < this.alunos.length; i++) {
            Aluno aluno = this.alunos[i];
            if (aluno == null) {
                continue;
            }
            System.out.println(aluno.nota);
        }
    }
}

class Aluno {

    String nome;
    int nota;
}

class TesteDaTurma {

    public static void main(String[] args) {
        Turma fj11 = new Turma();
        fj11.alunos = new Aluno[10];
        fj11.alunos[0] = new Aluno();
        fj11.alunos[0].nome = "Mauricio";
        fj11.alunos[0].nota = 9;
        fj11.alunos[1] = new Aluno();
        fj11.alunos[1].nome = "Rodrigo";
        fj11.alunos[1].nota = 8;
        fj11.alunos[2] = new Aluno();
        fj11.alunos[2].nome = "Cezar";
        fj11.alunos[2].nota = 10;
        fj11.imprimeNotas();
    }
}

Mude a classe TesteDaTurma de:

class TesteDaTurma {

para:

public class TesteDaTurma {

e tente de novo para ver se funciona.

O mesmo erro apresentou ao compilar .


Mesmo erro com o mesmo codigo. Estranho.

Observei um detalhe na imagem da sua IDE. O último arquivo Turma.java tem um asterisco no lado do nome, indicando que ele não está salvo.
Você salvou o arquivo antes de executar?

Salvei. Criei outro projeto e fiz denovo e apresenta o mesmo erro. Preciso importar alguma alguma lib ou colocar em um package será?

O eclipse apresenta esse alerta na linha 22

Tenta criar cada classe em um arquivo diferente, deixa todos no mesmo package.
Todas as classes devem ser public

1 curtida

Funcionou!! :+1::+1: Entao por isso nao compilava ? Não posso ter duas classes no mesmo arquivo .java ?

1 curtida

Marca como resolvida a resposta do @Mauricio_Hartmann

Blz!

1 curtida

Pode sim

2 curtidas

Entendo que o java não permite 2 classes publicas no mesmo arquivo. Mas esse arquivo não tinha classe publica, apenas da TesteDaTurma. Não entendi ainda o motivo de não compilar daquele modo.

Você pode ter mais de uma classe no mesmo arquivo.
Talvez o erro estivesse sendo causado pelos modificadores de visibilidade.
Mas é melhor deixar uma classe em cada arquivo.

1 curtida

Creio que isso pode ser coisa da IDE também…

2 curtidas

Sim. Creio que talvez seja um bug na IDE ou talvez a versão do Java. Testei os arquivos dele usando o Java 8 e a última versão do eclipse, rodou de boas

1 curtida

Obrigado a todos que me ajudaram !!:pray::pray::pray:

2 curtidas

Você estava tentando executar a classe Turma, que não possui método main.
Tem que executar a classe TesteDaTurma.

Pode sim, mas não é bonito.
O que não pode é ter mais de uma classe pública no mesmo arquivo .java.

1 curtida