Estou tentando executar um aplicativo Java, mas recebo este erro:
java.lang.ClassNotFoundException:
Depois dos dois pontos, vem a localização da classe que está faltando. No entanto, sei que esse local não existe, pois a classe está localizada em outro lugar. Como posso atualizar o caminho dessa classe? Tem algo a ver com o caminho da aula?
java
class
classpath
classnotfoundexception
user2426316
fonte
fonte
Respostas:
Seu classpath está corrompido (o que é um problema muito comum no mundo Java).
Dependendo de como você inicia seu aplicativo, você precisa revisar o argumento para
-cp
, sua entrada Class-Path em MANIFEST.MF ou seu layout de disco.fonte
Um caminho de classe é uma lista de locais de onde carregar classes.
Esses 'locais' podem ser diretórios ou arquivos jar.
Para diretórios, a JVM seguirá um padrão esperado para carregar uma classe. Se eu tenho o diretório C: / myproject / classes em meu classpath e tento carregar uma classe com.mycompany.Foo , ele irá procurar no diretório classes por um diretório chamado com , então sob esse diretório chamado mycompany , e finalmente, ele irá procurar um arquivo chamado Foo.class nesse diretório.
Na segunda instância, para arquivos jar, ele pesquisará o arquivo jar dessa classe. Um arquivo jar é na realidade apenas uma coleção compactada de diretórios como o acima. Se você descompactar um arquivo jar, obterá vários diretórios e arquivos de classe seguindo o padrão acima.
Portanto, a JVM percorre um caminho de classe do início ao fim, procurando a definição da classe quando tenta carregar a definição da classe. Por exemplo, no classpath:
C: / myproject / classes; C: /myproject/lib/stuff.jar; C: /myproject/lib/otherstuff.jar
A JVM tentará procurar primeiro nas classes de diretório , depois em stuff.jar e finalmente em otherstuff.jar .
Quando você obtém uma ClassNotFoundException, significa que a JVM percorreu todo o caminho de classe e não encontrou a classe que você tentou fazer referência. A solução, como tantas vezes no mundo Java, é verificar seu classpath.
Você define um classpath na linha de comando dizendo java -cp e, em seguida, seu classpath. Em um IDE como o Eclipse, você terá uma opção de menu para especificar seu classpath.
fonte
Esta é a melhor solução que encontrei até agora.
Suponha que temos um pacote chamado
org.mypackage
contendo as classes:e os arquivos que definem este pacote são armazenados fisicamente no diretório
D:\myprogram
(no Windows) ou/home/user/myprogram
(no Linux).A estrutura do arquivo será semelhante a esta:
Quando invocamos Java, que especifique o nome do aplicativo para executar:
org.mypackage.HelloWorld
. No entanto, também devemos dizer ao Java onde procurar os arquivos e diretórios que definem nosso pacote. Portanto, para iniciar o programa, temos que usar o seguinte comando:fonte
Se você souber o caminho da classe ou o jar que contém a classe, adicione-o ao seu caminho de classe enquanto o executa. Você pode usar o classpath conforme mencionado aqui:
no Windows
em UNIX / Linux
fonte
Tente estes se você usar maven. Eu uso o maven para o meu projeto e quando o faço
mvn clean install
e tento executar um programa, ele lança a exceção. Então, eu limpo o projeto e o executo novamente e ele funciona para mim.Eu uso o Eclipse IDE.
Para a exceção de classe não encontrada ao executar o teste Junit, tente executar
mvn clean test
uma vez. Ele irá compilar todas as classes de teste.fonte
Para adicionar a localização de uma classe ao seu caminho de classe via linha de comando, basta adicionar
-cp
ou-classpath
e a localização da classe enquanto a executa. IEOu se estiver executando um IDE como o eclipse, você pode clicar com o botão direito do mouse em
project -> build path -> configure build path
e adicionar o JAR externo que contém sua classe ao caminho de construção, então ele deve funcionar bem.fonte
Usar ';' como separador. Se suas variáveis de ambiente estiverem definidas corretamente, você deverá ver suas configurações. Se seu PATH e CLASSPATH estiverem corretos, o Windows deve reconhecer esses comandos. Você NÃO precisa reiniciar o computador ao instalar o Java.
fonte
Adicione o caminho completo do arquivo jar ao CLASSPATH. Em uso linux:
export CLASSPATH=".:/full/path/to/file.jar:$CLASSPATH"
. Outra maneira que funcionou (sem editar o CLASSPATH) foi descompactar o jar na pasta do projeto atual.Maneiras não funcionaram para mim:
1) Usando a
-cp
opção com o caminho completo do arquivo jar.2) Usar
-cp
apenas com o nome do jar quando localizado na pasta atual3) Copiando o jar para a pasta do projeto atual
4) Copiar o jar para o local padrão dos jars java (/ usr / share / java)
Esta solução é relatada para a classe com.mysql.jdbc.Driver em mysql-connector-java.5 - *. Jar, trabalhando em Linux com OpenJDK versão 1.7
fonte
Vá até o topo e remova a instrução import, se houver, e importe novamente a classe. Mas se esse não for o caso, faça uma limpeza e depois construa. Você está usando Netbeans ou Eclipse?
fonte
Também encontrei isso e tentei todas as outras soluções. Eu não tinha o arquivo .class na minha pasta HTML, só tinha o arquivo .java. Depois de adicionar o arquivo .class, o programa funcionou bem.
fonte
Pode acontecer se o seu caminho de classe não estiver correto
Vamos postular uma classe serializável e uma classe desserializá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 dessearializados. Nesse ínterim, se você alterar o nome do projeto, ele não funcionará. Você deve executar a classe serializável primeiro e, em seguida, desserializar o arquivo.
fonte
Se você estiver usando o maven, tente o maven atualizar todos os projetos e forçar para instantâneos. Ele vai limpar também e reconstruir todo o caminho de classe .. Isso resolveu meu problema ..
fonte
eu apenas fiz
1. Invalide caches e reinicie
2. Reconstruí meu projeto que resolveu o problema
fonte
Eu estava tentando executar .jar do código C # usando
Process
classe. O código java foi executado com sucesso no eclipse, mas não no C # visual studio e mesmo clicando diretamente no arquivo jar, ele sempre parava comClassNotFoundException:
exceção. A solução para a minha, foi exportar o programa java como "Arquivo JAR executável" ao invés de "Arquivo JAR". Espero que possa ajudar alguém.fonte
Isso pode acontecer no Windows após uma atualização do java em que a versão antiga do SDK do java está ausente e uma nova está presente. Gostaria de verificar se o seu IDE está usando a versão Java SDK instalada (IntelliJ: CTRL + SHIFT + ALT + S)
fonte
Se você adicionou várias bibliotecas ** (de terceiros) e classes de aplicativo Extends **
Então, pode ocorrer.
Para isso, você deve definir
multiDexEnabled true
e substituir suaApplication
classe estendida porMultiDexApplication
.Isso será resolvido.
fonte
Pergunta genérica básica - resposta genérica mais simples;)
Dadas as informações, assumirei que você pode estar tentando uma abordagem básica para codificação, construção / compilação e execução de um aplicativo de console simples como "Hello World", usando algum editor de texto simples e algum Command Shell.
Este erro ocorre no seguinte cenário:
Em outras palavras, use:
PS A adição da extensão de arquivo .class produz o mesmo erro. Certifique-se também de ter a pasta bin do Java (JDK / JRE) no PATH das Variáveis de ambiente do sistema operacional. (Procure mais detalhes em outras postagens sobre isso) PPS Eu estava correto em minha (s) suposição (s)?
fonte
Se você usa o maven, verifique se você tem este plug-in em
pom.xml
:Ele colocará sua dependência (o motivo da exceção) em seu jar.
Para sua informação : isso incluirá todas as dependências infladas no jar final
fonte
No meu caso, a classe lançada como exceção de classe não encontrada tem propriedades relacionadas a certificados SSL. Feche o eclipse e abra com “Executar como Administrador” e o problema foi resolvido. Como o eclipse tem permissão relacionada ao problema, ele lançará esse tipo de exceção.
fonte
Coloque todo o código no bloco try e então capture a exceção em um bloco catch
fonte