Como é que resolvo a exclusão de classe?

estou a tentar executar uma aplicação Java, mas a obter este erro:

java.lang.ClassNotFoundException:

Depois do cólon vem a localização da classe que falta. No entanto, eu sei que esse local não existe uma vez que a classe está localizada em outro lugar. Como posso atualizar o caminho dessa classe? Tem alguma coisa a ver com o caminho das aulas?

Author: vaxquis, 2013-07-01

17 answers

O seu classpath está partido (que é um Muito problema comum no mundo Java).

Dependendo de como iniciar a sua aplicação, terá de rever o argumento para {[[0]}, o seu item de caminho-de-classe no manifesto.MF ou a sua disposição do disco.

 23
Author: Thorbjørn Ravn Andersen, 2013-07-01 16:02:10

Um claspath é uma lista de locais de onde carregar as classes.

Estes 'locais' podem ser directórios ou ficheiros jar.

Para As Pastas, o JVM irá seguir um padrão esperado para carregar uma classe. Se eu tiver o directório C:/myproject/classes no meu classpath, e eu tento carregar uma classe com.a minha empresa.Foo , irá procurar no directório classes por um directório chamado com , depois sob esse directório chamado mycompany , e finalmente ele vai procurar por um arquivo chamado Foo.classe nessa pasta.

Na segunda instância, para arquivos jar, ele vai procurar o arquivo jar para essa classe. Um arquivo jar é, na realidade, apenas uma coleção fechada de diretórios como o acima. Se você abrir um arquivo jar, você vai obter um monte de diretórios e arquivos de classe seguindo o padrão acima.

Então, a JVM percorre um desfiladeiro do início ao fim à procura da definição da classe quando tenta carregar a definição de classe. Por exemplo, no claspath:

C:/myproject/classes;C:/myproject/lib/stuff.jar;C:/myproject/lib/otherstuff.jar

O JVM tentará procurar no directório classes primeiro, depois em coisas.jar e finalmente em outro punho.jar .

Quando se tem uma ideia de classe não encontrada, significa que o JVM atravessou todo o classspath e não encontrou a classe que tentou referenciar. A solução, como tantas vezes acontece no mundo Java, é para verificar o teu Fecho.

Você define um fecho na linha de comando dizendo java-cp e depois o seu fecho. Em um IDE como o Eclipse, você terá uma opção de menu para especificar o seu classpath.

 29
Author: user2000590, 2013-07-01 16:20:52
Esta é a melhor solução que encontrei até agora. Suponha que temos um pacote chamado org.mypackage contendo as classes:
  • HelloWorld (classe principal)
  • Suporte Classe
  • UtilClass

E os ficheiros que definem este pacote são armazenados fisicamente sob o directório D:\myprogram (no Windows) ou /home/user/myprogram (no Linux).

A estrutura dos ficheiros ficará assim: enter image description here

Quando invocamos Java, especificamos o nome de a aplicação a executar: org.mypackage.HelloWorld. No entanto, também devemos dizer ao Java onde procurar os arquivos e diretórios que definem nosso pacote. Então, para lançar o programa, temos que usar o seguinte comando: enter image description here

Nota: tem de executar o comando acima java, independentemente da sua localização actual. Mas este não é o caso de javac. Para compilar você pode até mesmo ir diretamente para o diretório onde você tem os seus ficheiros .java e executá-los directamente javac ClassName.java.

 9
Author: Ram Patra, 2015-10-05 06:51:52

Se você conhece o caminho da classe ou o jarro que contém a classe, em seguida, adicione-o ao seu classpath enquanto executá-lo. Você pode usar o claspath como mencionado aqui:

No Windows

java -classpath .;yourjar.jar YourMainClass

On UNIX / Linux

java -classpath .:yourjar.jar YourMainClass
 6
Author: Juned Ahsan, 2013-07-01 16:05:18

Experimente estes se utilizar maven. Eu uso maven para o meu projeto e quando eu faço {[[0]} e tento executar um programa ele lança a exceção. Então, eu limpo o projeto e o dirijo novamente e funciona para mim.

Eu uso o IDE do eclipse.

Para A classe que não foi encontrada excepção ao executar o teste Junit, tente executar mvn clean test uma vez. Ele irá compilar todas as classes de teste.

 4
Author: Arun, 2018-09-05 06:29:33

Para adicionar a localização de uma classe ao seu claspath através da linha de comandos basta adicionar -cp ou -classpath e a localização da classe enquanto a executa. I. E.

java -cp "c:/location/of/file" YourProgram
Ou se estiver a correr um IDE como o eclipse, pode carregar com o botão direito no project -> build path -> configure build path e adicione o frasco externo que contém a sua classe para o caminho de construção, em seguida, ele deve funcionar bem.
 3
Author: invictvs1, 2013-07-01 16:23:03

Usar'; ' como separador. Se as suas variáveis de ambiente estiverem definidas correctamente, deverá ver as suas configurações. Se o seu caminho e CLASSPATH estiverem corretos, o windows deve reconhecer esses comandos. Você não precisa reiniciar o seu computador ao instalar o Java.

 3
Author: Kiran S, 2015-01-19 08:33:42

Adicione olocal completo do ficheiro jar ao CLASSPATH. No linux use: export CLASSPATH=".:/full/path/to/file.jar:$CLASSPATH". A outra forma de trabalhar (sem editar o CLASSPATH) foi desbloquear o jar na pasta do projecto actual.

As maneiras não funcionavam para mim.

1) Usando a opção -cp com a localização completa do ficheiro jar.

2) Usando -cpapenas com o nome do jar quando localizado na pasta actual

3) a copiar o frasco para a pasta do projecto actual

4) copiar o frasco para a localização normal de java jars (/usr/share / java)

esta solução é reportada para a classe com.versao.jdbc.Motorista em mysql-connector-java.5-*.jar, a trabalhar no linux com a versão do OpenJDK 1.7

 3
Author: Annonnymous Person, 2015-12-04 09:10:45

Vá até o topo e remova a declaração de importação se houver uma, e re importar a classe. Mas se não for esse o caso, faça uma limpeza, então construa. Estás a usar Netbeans ou Eclipse?

 2
Author: yams, 2013-07-01 16:04:57
Também encontrei isto e tentei todas as outras soluções. Eu não tinha.o ficheiro da turma na minha pasta de HTML, só tinha o .ficheiro java. Uma vez adicionei o .o programa funcionou bem.
 2
Author: Jason Robertson, 2014-01-13 15:35:57
  1. Pode acontecer se o seu claspath não estiver correcto.

  2. Vamos posicionar uma classe serializável e deserializável sob o mesmo nome de projeto. Você executa a classe serializável, criando um objeto serializável em uma pasta específica. Agora você precisa dos dados desearializados. Entretanto, se você mudar o nome do projeto, ele não vai funcionar. Você tem que executar a classe serializável primeiro e, em seguida, deserializar o arquivo.

 2
Author: Omar Faroque Anik, 2014-02-10 22:24:51

Se estiver a utilizar maven tente maven atualizar todos os projetos e forçar para instantâneos. Ele também vai limpar e reconstruir todos os classpath.. Resolveu o meu problema..

 2
Author: ibrahimgunes, 2017-01-11 08:16:31

Acabei de o fazer

1.Invalidar as baratas e reiniciar

2.reconstruí o meu projecto que resolveu o problema

 2
Author: Jyoti JK, 2018-02-19 11:27:51
Estava a tentar fugir .jar do Código C# usando a classe Process. O código java foi executado com sucesso a partir do eclipse, mas não do C# visual studio e mesmo clicando diretamente no arquivo jar, ele sempre parou com a exceção de ClassNotFoundException:. Solution for my, was export the java program as " Runnable JAR file "instead of"JAR File". Espero que possa ajudar alguém.
 1
Author: Dani Aya, 2018-02-14 13:24:33

Isto pode acontecer no Windows depois de uma actualização java onde a versão antiga do SDK java está em falta e uma nova está presente. Eu verificaria se o seu IDE está a usar a versão SDK java instalada (Intelij: CTRL + SHIFT + ALT + S)

 1
Author: s5s, 2018-04-03 14:03:56

Se adicionou várias (terceiros)**bibliotecas e estende * * aplicação classe

Então pode acontecer.

Para isso, tens de definir {[[0]} e substituir a tua classe Application alargada por MultiDexApplication.

Vai ser resolvido.
 0
Author: Parth Patel, 2018-09-22 09:41:28

Colocar todo o código no bloco de tentativa e, em seguida, a excepção de captura num bloco de captura

try
{
    // code
}
catch(ClassNotFoundException e1)
{
    e1.getmessage();
}
 -3
Author: sharukh, 2015-02-24 01:48:46