Correção: não foi possível encontrar ou carregar a classe principal



Experimente Nosso Instrumento Para Eliminar Problemas

O erro ' Não foi possível encontrar ou carregar a classe principal 'Ocorre ao usar um comando java no prompt de comando para lançar um programa Java especificando o nome da classe no terminal. A razão pela qual isso acontece é principalmente devido ao erro de programação do usuário ao declarar a classe.



Não foi possível encontrar ou carregar a classe principal na linha de comando Java

Não foi possível encontrar ou carregar a classe principal - linha de comando Java



Como mencionado antes, esse erro geralmente não está relacionado ao sistema e o usuário comete um erro em vários cenários, conforme mostrado abaixo. Antes de prosseguir, presumimos que você tenha um conhecimento básico da linguagem de programação Java e como ela funciona.



O que causa o erro ‘Não foi possível encontrar ou carregar a classe principal’ em Java?

A mensagem ‘Não foi possível encontrar ou carregar a classe principal’ significa que a primeira etapa do mecanismo Java que busca a classe para execução falhou. o comando java não foi capaz de localizar a classe no diretório correto.

Em alguns casos, você deve adicionar o caminho de arquivo correto e aponte o terminal Java para o local correto. Como você está executando o comando a partir do terminal de linha de comando, o computador não sabe onde a classe pode ser encontrada ou onde está localizada. Em IDEs direcionados, este não é o problema, pois o IDE mantém um ponteiro apontando para o diretório de trabalho atual.

O que é sintaxe ‘java’?

Antes de começarmos a solucionar o motivo do terminal estar retornando um erro ao tentar executar, primeiro precisamos examinar a sintaxe do comando. Se não estiver usando a sintaxe correta, você enfrentará esse erro inevitavelmente.



A sintaxe normal do comando é mais ou menos assim:

java [...] [...]

Aqui está uma opção de linha de comando, é um nome de classe Java totalmente qualificado e é um argumento de linha de comando que é passado para seu aplicativo quando todo o pacote é compilado.

Um exemplo de comando válido é:

java -Xmx100m com.acme.example.ListAppuals kevin arrows bart

O comando acima fará com que o comando java execute as seguintes operações:

  • Ele irá procurar por uma versão compilada da classe ‘ com.acme.example.ListAppuals '.
  • Depois de pesquisar, ele irá carregar a classe.
  • Em seguida, quando a classe é carregada, a classe será pesquisada por um método 'principal' com uma assinatura, modificadores e tipo de retorno válidos. Um exemplo de classe principal seria algo como:
public static void main (String [])
  • O método será chamado com os argumentos 'kevin', 'flechas' e 'bart' como string [].

Como corrigir 'Não foi possível encontrar ou carregar a classe principal'

Solução 1: Verificar o argumento do nome da classe

O erro mais comum que os usuários cometem é fornecer um nome de classe errado como argumento (ou um nome de classe correto é uma forma errada). Como estamos declarando parâmetros na linha de comando, é altamente provável que você passe o argumento do nome da classe de uma forma errada. Listaremos aqui todos os cenários possíveis em que você pode cometer um erro.

  • Escrevendo um nome de classe simples . Se você declarar a classe em um pacote como ‘com.acme.example’, você deve usar o nome completo da classe incluindo o pacote no comando Java.
java com.acme.example.ListAppuals

ao invés de

java ListAppuals
  • Você deve declarar um nome de classe em vez de declarar um nome de arquivo ou caminho. Java não busca a classe se você declarar um nome de caminho / nome de arquivo para ela. Incorreta as entradas incluem o seguinte:
java ListAppuals.class java com / acme / example / ListAppuals.class
  • Invólucro deve ser levado em consideração. Os comandos Java diferenciam maiúsculas de minúsculas e se você cometer um erro de até mesmo uma letra, não será capaz de carregar a classe principal. Um exemplo de erros incorretos está:
java com.acme.example.listappuals
  • Vocês não deveria declarar para nome do arquivo fonte . Como mencionado antes, você só precisa declarar a classe no formato de nome de classe completo correto. Exemplo de erro é:
java ListAppuals.java
  • Este erro também ocorrerá se você fizer um erro de digitação ou esqueça de escrever o nome da classe inteiramente .

Se você cometeu algum erro negligente ao declarar o nome da classe, certifique-se de corrigi-lo e tente iniciar o programa.

Solução 2: Verificando o classpath

Se você declarou o nome da classe corretamente, mas o erro ainda é mostrado, é provável que o comando java não tenha encontrado o nome da classe especificado no caminho. O classpath é um caminho onde o Java Runtime procura por recursos e arquivos de classe. Você pode definir facilmente o caminho de classe usando dois comandos diferentes, conforme mostrado abaixo:

C:> sdkTool -classpath classpath1; classpath2 ... C:> definir CLASSPATH = classpath1; classpath2 ...

Para obter mais informações sobre o caminho de classe, você deve verificar os seguintes documentos.

Documentação do comando Java

Configurando o caminho de classe

Solução 3: Verificando o diretório

Quando você declara um diretório como um caminho de classe, ele sempre corresponderá à raiz do namespace. Por exemplo, se “/ usr / local / acme / classes” estiver no caminho de classe, o Java pesquisará por uma classe “com.acme.example.Appuals”. Ele procurará uma classe com o seguinte caminho:

/usr/local/acme/classes/com/acme/example/Appuals.class

Portanto, em essência, se você colocar o seguinte endereço no caminho de classe, o Java não conseguirá encontrar a classe:

/ usr / local / acme / classes / com / acme / example

Você também deve verificar o seu subdiretório e veja se ele corresponde ao FQN. Se suas classes FQN forem “com.acme.example.Appuals”, então o Java irá procurar por um “Appuals.class” no diretório “com / acme / example”.

Para dar um exemplo, vamos supor o seguinte cenário:

  • A classe que você deseja executar é: com.acme.example.Appuals
  • o caminho completo do arquivo é: /usr/local/acme/classes/com/acme/example/Appuals.class
  • o diretório de trabalho atual é: / usr / local / acme / classes / com / acme / example /

Então, os seguintes cenários seriam válidos:

# errado, FQN é necessário java Appuals # errado, não há pasta `com / acme / example` no diretório de trabalho atual java com.acme.example.Appuals # errado, semelhante ao cenário java -classpath acima. com.acme.example.Appuals # OK; um caminho de classe relativo é definido java -classpath ../../ .. com.acme.example.Appuals # OK; um caminho de classe absoluto é definido java -classpath / usr / local / acme / classes com.acme.example.Appuals

Nota: O caminho de classe também precisa incluir todas as outras classes (não do sistema) que seus aplicativos precisam.

Solução 4: Verificando o pacote da aula

Se todas as soluções acima forem verdadeiras no seu caso, você precisa ter certeza de que seu código-fonte está colocado na pasta correta. Além disso, você declarou corretamente o pacote . Se você executar seu código com um IDE, ele provavelmente o informará sobre o problema. Porém, no nosso caso, como o estamos executando no prompt de comando, o erro passará despercebido e você obterá o erro da classe em discussão.

4 minutos lidos