Variáveis de Ambiente

2 respostas
nikitobr

Eu procurei antes aqui no forum e não encontrei o uma resposta para o que eu quero.
Eis a situação.
Eu tenho um OS Ubuntu, nele eu tenho instalado o jkd. Tudo funciona, mas não como deveria.
Eu tenho as minha variaveis de ambiente no arquivo

/etc/profile

Dentro dele está assim…

JAVA_HOME=/opt/java/jdk1.6.0_20
export JAVA_HOME

CATALINA_HOME=/opt/java/apache-tomcat-6.0.26/
export CATALINA_HOME

PATH=$PATH:$JAVA_HOME/bin
export PATH

CLASSPATH=$JAVA_HOME/lib
export CLASSPATH

JRE_HOME=$JAVA_HOME/jre
export JRE_HOME

MANPATH=$JAVA_HOME/man
export MANPATH

No terminal…

bruno@casa-desktop:~$ echo $JAVA_HOME 
/opt/java/jdk1.6.0_20
bruno@casa-desktop:~$ echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/java/jdk1.6.0_20/bin
bruno@casa-desktop:~$ echo $CLASSPATH 
/opt/java/jdk1.6.0_20/lib
bruno@casa-desktop:~$

Ao compilar …

javac -d ../class Pai.java

funciona perfeita
mas quando eu vou executar

java Pai

dá um erro

Exception in thread "main" java.lang.NoClassDefFoundError: Pai
Caused by: java.lang.ClassNotFoundException: Pai
	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
Could not find the main class: Pai. Program will exit.

para corrigir eu tenho de passar a flag -classpath

java -classpath .  Pai

agora executa perfeitamente.
se eu mudar as configurações para o arquivo /etc/bash.bashrc muda o erro:

java Pai

funciona perfeitamente
e

javac -d ../class Pai.java

Não funciona e apresento o erro

/bin/sh: javac: not found

Minha duvida é :
Pq quando eu uso o arquivo /etc/profile eu sou obrigado a usar a flag -classpath . Pq eu não posso simplismente “java Pai”?

2 Respostas

douglas_vidotto

Acredito que seja porque você não colocou o diretório atual, representado pelo ponto(.) no seu classpath. Adicione o . que deve funcionar.

CLASSPATH=.:$JAVA_HOME/bin

Abraços.

nikitobr

Muito obrigado douglas_vidotto.

Funcionou perfeitamente!

Criado 4 de julho de 2010
Ultima resposta 4 de jul. de 2010
Respostas 2
Participantes 2