Não foi possível encontrar ou carregar o Java da classe principal? Veja como consertar!

Não foi possível encontrar ou carregar o Java da classe principal? Veja como consertar!

Se você continua recebendo o erro de classe principal não encontrada em seu projeto Java sem motivo aparente, não se preocupe, você não está sozinho.





Como um dos erros mais imprevisíveis e espontâneos, graças à tendência da JVM (Java Virtual Machine) de se ater a um classpath padrão, o problema da 'classe principal não encontrada' é algo que assombra amadores e profissionais.





Mas essa questão é na verdade menos intimidante do que parece. Continue lendo para descobrir como você pode se livrar desse erro de uma vez por todas.





Por que a classe principal não foi encontrada?

Antes de tentar entender como e por que a JVM não foi capaz de encontrar a classe principal, precisamos entender o conceito de Classpath em Java.

O que é Classpath?

O classpath é o caminho do arquivo que o Java Runtime Environment procura por classes e outros arquivos de recursos. Ele pode ser definido usando o -classpath opção ao executar um programa ou ao configurar o sistema CLASSPATH variável de ambiente.



Como o nome sugere, é simplesmente um caminho de arquivo onde o .classe os arquivos podem ser encontrados em um pacote ou diretório JDK.

Quando a JVM não consegue localizar a classe principal, geralmente é porque está procurando o correspondente .classe arquivos no caminho de classe errado. Obviamente, a maneira de corrigir esse problema é especificar manualmente o caminho de classe usando pacotes ou especificando o caminho de classe.





Neste ponto, se você gostaria de refrescar sua memória das classes Java, confira nosso guia para criando classes em Java .

melhor app para aprender violão para iniciantes

Usando Pacotes

Vamos criar uma classe chamada Teste . Coloque-o em um pacote chamado testPackage . Os pacotes são usados ​​em Java para agrupar classes semelhantes ou fornecer um namespace exclusivo para as classes.





Neste exemplo simples, usar um pacote ajudará você a visualizar como funciona o classpath do Java. Em seu aplicativo gerenciador de arquivos, um pacote é representado como uma pasta independente.

package testPackage;
public class Test {
public static void main(String args[]) {
System.out.println('File successfully found!');
}
}

Agora, abra um novo terminal e certifique-se de que seu diretório de trabalho seja o mesmo que contém a pasta do pacote. Você pode alterar o diretório de trabalho usando o CD comando em qualquer sistema operacional.

Compilar Test.java executando o seguinte comando:

package testPackage;
javac testPackage/Test.java

Isso salvará o arquivo binário compilado (o arquivo .class) no testPackage.

Para executar a classe compilada, você precisa digitar o nome da classe totalmente qualificado na linha de comando. O nome totalmente qualificado de uma classe Java refere-se a seu nome prefixado com seu nome de pacote. Neste caso, deve ser parecido com isto:

java testPackage.Test

Essa maneira de chamar arquivos de classe também garante que você possa chamar executáveis ​​de diferentes pacotes do mesmo diretório de trabalho. Tudo que você precisa fazer é modificar o nome da classe totalmente qualificado.

Em implementações mais avançadas, recomendamos que você crie subpastas separadas para suas classes e arquivos de origem para gerenciar melhor os arquivos dentro do pacote.

Especificando manualmente o Classpath

A maneira recomendada de gerenciar seus arquivos java é criar diretórios separados para arquivos de origem e classes. Se você está trabalhando em um projeto, é provável que já esteja fazendo isso.

Convencionalmente, o diretório com os arquivos de origem é rotulado como src e aquele com arquivos .class é rotulado como Aulas. Essa também é uma maneira de garantir que a probabilidade de a JVM não encontrar a classe principal seja reduzida significativamente, devido ao diretório devidamente estruturado.

Se usarmos esse método, a estrutura do diretório ficará assim antes da compilação:

jogos mentais para jogar com um amigo
|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes

Cada recuo na ilustração acima corresponde a um nível da hierarquia de arquivos que seu projeto deve seguir.

Para compilá-lo, certifique-se de que seu diretório de trabalho seja myFolder. Agora, digite o seguinte comando:

javac -d classes src/testPackage/Test.java

o .classe executável deve ser salvo em myFolder / classes / testPackage . Conseqüentemente, a estrutura do diretório de arquivos se parece com isto:

|---myFolder
| |---src
| |---testPackage
| |---Test.java
|
| |---classes
| |---testPackage
| |---Test.class

Para executar o .classe arquivo, execute o comando Java com o nome de classe totalmente qualificado e especifique o caminho de classe local. Cada caminho é declarado em relação ao diretório de trabalho, que neste caso é myFolder.

java -classpath classes testPackage

A execução desse comando deve fornecer a saída desejada. Mas, por que tanta reorganização é necessária para resolver um erro simples?

A importância da organização de arquivos em Java

A própria razão pela qual 'Não foi possível encontrar ou carregar a classe principal' é lançada é porque a JVM não foi capaz de encontrar onde seu .classe arquivos estavam sendo armazenados.

A maneira mais fácil de resolver esse erro é controlar onde os arquivos .class são armazenados e dizer explicitamente à JVM para procurar lá. Isso é possível organizando seus arquivos de origem e executáveis ​​separadamente e controlando tudo a partir de um diretório de trabalho.

Conforme você começa a adicionar construções como herança para o seu projeto, a complexidade do sistema de arquivos tende a aumentar muito. Em tais projetos ou mesmo naqueles em que o uso de arquivos JAR ou bibliotecas customizadas é necessário, a prática simples de segregar e gerenciar arquivos pode economizar incontáveis ​​horas de resolução de problemas e depuração.

Para ler mais sobre como o classpath funciona em Java e as inúmeras coisas que você pode controlar quando se trata de executar seu código, você também pode dar uma olhada no referência detalhada e fácil de usar .

Compartilhado Compartilhado Tweet O email Os 10 melhores projetos iniciantes para novos programadores

Quer aprender a programar, mas não sabe por onde começar? Esses projetos e tutoriais de programação para iniciantes irão iniciá-lo.

remover uma quebra de página na palavra
Leia a seguir Tópicos relacionados
  • Programação
  • Java
Sobre o autor Yash Chellani(10 artigos publicados)

Yash é um aspirante a estudante de ciência da computação que adora construir coisas e escrever sobre todas as coisas relacionadas à tecnologia. Em seu tempo livre, ele gosta de jogar Squash, ler uma cópia do último Murakami e caçar dragões em Skyrim.

Mais de Yash Chellani

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever