Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Classe não encontrada

Ola, estou utilizando o app Jvdroid que me ajuda quando estou em movimento
Me deparo com erro de classe não encontrado , ja tentei de tudo ,mudar o diretório,compilar só o main, poderiam me ajudar:Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

Olá, Thiago! Tudo certo?

O erro "Could not find or load main class" geralmente ocorre quando o Java não consegue localizar a classe principal que contém o método main. Vamos tentar resolver isso:

  1. Verifique o pacote: certifique-se de que o arquivo Main.java está no pacote correto. Pelo que vi, ele está dentro do diretório radio, então o arquivo Main.java deve começar com a declaração de pacote package radio;.

  2. Estrutura de diretórios: confirme que a estrutura de diretórios reflete o pacote. No seu caso, o diretório src/main/java/radio deve conter o arquivo Main.java.

  3. Compilação correta: quando compilar, certifique-se de estar no diretório src/main/java e use o comando:

    javac radio/Main.java
    

Caso essas dicas não solucionem o seu problema, peço que compartilhe comigo todo o seu projeto para que eu consiga realizar testes para identificar o problema.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Ola Armano tudo bem.Tentei de todas as formas sem sucesso, estarei compartilhando todo o projeto e assim dissecando possamos solucionar e ajudar outros que venham a utilizar essa ferramenta mobile.

package radio;

public class Audio {
    
    private String titulo;
    private int totalReproducoes;
    private int totalCurtidas;
    private int classificacao;

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public int getTotalReproducoes() {
        return totalReproducoes;
    }

    public int getTotalCurtidas() {
        return totalCurtidas;
    }

    public abstract double getClassificacao();

    public void curte(){
        this.totalCurtidas++;
    }

    public void reproduz(){
        this.totalReproducoes++;
    }
}
package radio;

public class MinhasPreferidas {

    public void inclui(Audio audio) {
        if(audio.getClassificacao() >= 9) {
            System.out.println(audio.getTitulo() + " é considerado sucesso absoluto" +
                    " e preferido por todos!");
        } else {
            System.out.println(audio.getTitulo() + " também é um dos que todo mundo está " +
                    "curtindo");
        }
    }
}
package radio;

public class Musica extends Audio {
    private String album;
    private String cantor;
    private String genero;

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getCantor() {
        return cantor;
    }

    public void setCantor(String cantor) {
        this.cantor = cantor;
    }

    public String getGenero() {
        return genero;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }

    @Override
    public double getClassificacao() {
        if(this.getTotalReproducoes() >= 1000) {
            return 10;
        } else {
            return 7;
        }
    }
}
package radio;

public class Podcast extends Audio {
    
    private String apresentador;
    private String descricao;

    public String getApresentador() {
        return apresentador;
    }

    public void setApresentador(String apresentador) {
        this.apresentador = apresentador;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    @Override
    public double getClassificacao() {
        if(this.getTotalCurtidas() >= 400){
            return 10;
        } else {
            return 8;
        }
    }
}
package radio;

import radio.Audio;
import radio.MinhasPreferidas;
import radio.Musica;
import radio.Podcast;

//Classe Main
public class Main {
    
    public static void main(String[] args) {
        
          //new-Criação Objeto Música
        Musica minecraft = new Musica();
        minecraft.setTitulo("418 Moog City");//Título
        minecraft.setCantor("Minecraft");//Cantor
        minecraft.setAlbum("Java");//Álbum
        minecraft.setGenero("Chiptune");//Gênero

         /*------LOOPS----- */
        //Loop Reprodução
        for (int i = 0; i < 1000; i++){
            minecraft.reproduz();
        }
        //Loop Curtidas
        for (int i = 0; i < 50; i++) {
            minecraft.curte();
        }

        //new-Criação Objeto Podcast
        Podcast arquibancada = new Podcast();
        arquibancada.setTitulo("Arquibancada Tricolor");
        arquibancada.setApresentador("Sombra,Marcão, Daniel Perrone, Renata Saporito, Ricardo Sena");
        arquibancada.setDescricao("Tudo o que acontece no São Paulo Futebol Clube");

        /*------LOOPS----- */
        //Loop Reprodução
        for (int i = 0; i < 500; i++){
            arquibancada.reproduz();
        }
        //Loop Curtidas
        for (int i = 0; i < 400; i++) {
            arquibancada.curte();
        }
        
       //new-Criação Objeto Minhas Preferidas
        MinhasPreferidas minhasPreferidas = new MinhasPreferidas();
        minhasPreferidas.inclui(minecraft);//Música
        minhasPreferidas.inclui(arquibancada);//Podcast
    }
}

Segue screenshot do diretorio onde executo os projetos Java no meu dispositivo! Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Oi, Thiago! Perdão pela demora em responder.

O problema não está no código em si, mas na forma como você está compilando/executando com pacote (package radio;). Você declarou todas as classes dentro do pacote radio, então o Java NÃO vai encontrar a classe Main se você rodar como java Main.

Resolva fazendo o seguinte:

  1. Vá para a pasta onde estão os arquivos .java (a pasta Radio que você mostrou).

  2. Compile respeitando o pacote:

    
     javac -d . *.java
     
  3. Execute usando o nome completo da classe (com pacote):

    
     java radio.Main
     

Ponto MUITO importante no seu código (vai dar erro depois):

Sua classe Audio tem método abstrato, então ela precisa ser classe abstrata também.

Ajuste assim:


public abstract class Audio {

Resumo direto do problema:

  • Você usou package radio
  • Mas estava executando como se fosse sem pacote
  • O correto é: java radio.Main

Se no Jvdroid ainda falhar, me diga exatamente qual comando você está usando lá que te ajusto específico para mobile.

Fico à disposição!