Não foi possível localizar nem carregar a classe principal <classe>

28/09/2011

0

Me sinto como um noob de novo. Mas vamo lá... Eu estava com a máquina virtual de 32-bits, e fui instalar a de 64-bits para fazer uns testes. Mas, por algum motivo eu *quebrei* o java. Toda classe que eu tento executar, da esse erro, não consigo mais nem executar o hello world mais!

public class Classe{

    public static void main (String[] args) {
		System.out.println("Quebrei o java!");
	}
}
[img]http://javafree.uol.com.br/files_user/files/4/54/40/quebrei%20o%20java.png[/img] alguém sabe o que eu fiz?? ou melhor, alguém sabe como eu conserto isso? O que eu achei mais estranho é: Ele da esse erro com toda e qualquer classe, como se o arquivo não existisse. mas se eu tentar executar um arquivo jar
java -jar MeuArquivo.jar
ele funciona normalmente.. E pelo Netbeans eu também consigo executar, só pela linha de comando (do DOS) não funciona.
Douglas Eric

Douglas Eric

Responder

Posts

28/09/2011

Douglas Eric

[quote="sekkuar"]Me sinto como um noob de novo. Mas vamo lá... Eu estava com a máquina virtual de 32-bits, e fui instalar a de 64-bits para fazer uns testes. Mas, por algum motivo eu *quebrei* o java. Toda classe que eu tento executar, da esse erro, não consigo mais nem executar o hello world mais!

public class Classe{

    public static void main (String[] args) {
		System.out.println("Quebrei o java!");
	}
}
[img]http://javafree.uol.com.br/files_user/files/4/54/40/quebrei%20o%20java.png[/img] alguém sabe o que eu fiz?? ou melhor, alguém sabe como eu conserto isso? O que eu achei mais estranho é: Ele da esse erro com toda e qualquer classe, como se o arquivo não existisse. mas se eu tentar executar um arquivo jar
java -jar MeuArquivo.jar
ele funciona normalmente.. E pelo Netbeans eu também consigo executar, só pela linha de comando (do DOS) não funciona.
já tentou
java -cp . Classe
ou conferiu a variável de ambiente CLASSPATH? [[]]
Responder

28/09/2011

Douglas Eric

[quote="simu"] já tentou
java -cp . Classe
ou conferiu a variável de ambiente CLASSPATH? [[]]
funciona com
java -cp . Classe
Ué, agora não entendi. O que era pra ter na variável CLASSPATH?
C:\>echo %CLASSPATH%
C:\Program Files\Java\jdk1.7.0\bin
Se a classe está no mesmo diretório que eu estou executando, não precisava usar -cp, precisava? Nunca usei isso e funcionava antes.
Responder

28/09/2011

Douglas Eric

[quote="sekkuar"][quote="simu"]...
funciona com
java -cp . Classe
Ué, agora não entendi. O que era pra ter na variável CLASSPATH?
C:\>echo %CLASSPATH%
C:\Program Files\Java\jdk1.7.0\bin
Se a classe está no mesmo diretório que eu estou executando, não precisava usar -cp, precisava? Nunca usei isso e funcionava antes.
Sim precisa pois o CLASSPATH indica, na falta da opção -cp, onde o Java procura as classes. Com esse CLASSPATH, APENAS o diretório "bin" será usado! Para procurar no diretório atual tem que incluir um "." ou deixar o CLASSPATH indefinido (equivale a "." {pelo menos até Java 6}). Não entendo o porque do "bin" estar lá? Não era para ter nenhuma classe nesse diretório.
set CLASSPATH=.;%CLASSPATH%
[[]]
Responder

28/09/2011

Douglas Eric

ah entendi, então faltou um bendito "." no classpath? eu coloquei o bin porque eu estava tentando executar a classe direto da pasta do jdk (para executar com máquinas virtuais diferentes). agora ficou assim

C:\>echo %classpath%
.;C:\Program Files\Java\jdk1.7.0\bin

e funciona! maldito ponto! valeu simu! Não achei essa do ponto em lugar nenhum.
Responder

28/09/2011

Douglas Eric

[quote="sekkuar"]ah entendi, então faltou um bendito "." no classpath? eu coloquei o bin porque eu estava tentando executar a classe direto da pasta do jdk (para executar com máquinas virtuais diferentes). agora ficou assim

C:\>echo %classpath%
.;C:\Program Files\Java\jdk1.7.0\bin

e funciona! maldito ponto! valeu simu! Não achei essa do ponto em lugar nenhum.
A documentação do Java está cada vez mais seguindo os padrões da Oracle: difícil de encontrar o que necessita. (e toda vez que penso que entendi como está organizada, eles mudam tudo) Mas achei o seguinte link na descrição do comando java: [url="http://download.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html"][u]Setting the Class Path[/u][/url]
... The default class path is the current directory. Setting the CLASSPATH variable or using the -classpath command-line option overrides that default, so if you want to include the current directory in the search path, you must include "." in the new settings. ...
[[]]
Responder

28/09/2011

Douglas Eric

[quote="simu"] A documentação do Java está cada vez mais seguindo os padrões da Oracle: difícil de encontrar o que necessita. (e toda vez que penso que entendi como está organizada, eles mudam tudo) Mas achei o seguinte link na descrição do comando java: [url="http://download.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html"][u]Setting the Class Path[/u][/url]
... The default class path is the current directory. Setting the CLASSPATH variable or using the -classpath command-line option overrides that default, so if you want to include the current directory in the search path, you must include "." in the new settings. ...
[[]]
Ah, então o problema não foi instalar outra jvm. Quando eu fui testar, coloquei as classes no jdk1.7.0\bin, e criei o CLASSPATH, que não existia. Como ele não existia, o padrão é o ".", quando eu criei ele, tirei o padrão, e sem o ponto não funciona. É a mesma história de criar um construtor que recebe um int, faz o construtor sem argumentos sumir, ai você é obrigado a incluir ele [i]também[/i], o que não precisava fazer se não definisse nenhum construtor.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar