Como é que resolvo a exclusão de classe?
estou a tentar executar uma aplicação Java, mas a obter este erro:
java.lang.ClassNotFoundException:
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.
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.
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:
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:
Nota: tem de executar o comando acima
java
, independentemente da sua localização actual. Mas este não é o caso dejavac
. Para compilar você pode até mesmo ir diretamente para o diretório onde você tem os seus ficheiros.java
e executá-los directamentejavac ClassName.java
.
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
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.
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.
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.
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.
1) Usando a opção -cp
com a localização completa do ficheiro jar.
2) Usando -cp
apenas 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
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?
Pode acontecer se o seu claspath não estiver correcto.
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.
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..
Acabei de o fazer
1.Invalidar as baratas e reiniciar
2.reconstruí o meu projecto que resolveu o problema
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.
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)
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
.
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();
}