Problemas com Variaveis de ambiente no linux

Fala galera do GUJ estou com problema a muito tempo com as variaveis de ambiente do java no linux
estou setando as variaveis da forma que segue abaixo dou javac tento compilar algum codigo aparece java: command not found
segue abaixo meu profile para alguem possa me ajudar

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games"

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='\u@\h:\w\$ '
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi


 JAVA_HOME=:/usr/java/j2sdk1.4.2_08
 CLASSPATH=.:$CLASSPATH
 PATH=$JAVA_HOME/bin:$PATH
 export PATH

ja instalei o java e tambem criei este diretorio usr/java/j2sdk1.4.2_08 onde o pacote se encontra
se for tambem ajudar estou utilizando linux Debian-BR-CDD
sera alguem poderia me uma força na configuração destas variaveis :shock:

Acrescenta no export:

export JAVA_HOME CLASSPATH PATH

e retira os : na linha

JAVA_HOME=/usr/java/j2sdk1.4.2_08

Não sei qual a distribuição que usas, mas recomendo que faças as tuas definições num ficheiro diferente do /etc/profile, eu utilizo o ficheiro /etc/profile.local, desta forma sempre que faço qualquer actualização no linux o ficheiro profile.local nunca é sobreposto.

Abraços

[quote=andreff] ... PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games" ... JAVA_HOME=:/usr/java/j2sdk1.4.2_08 CLASSPATH=.:$CLASSPATH PATH=$JAVA_HOME/bin:$PATH export PATH
[/quote]

Sempre é bom saber o que está fazendo, em vez de copiar de algum lugar sem saber o que está acontecendo.

No Bourne Shell ou no BASH, você precisa saber o que é EXPORT. No seu caso, você deve exportar todas as variáveis que precisa visualizar depois de executar o .profile (se é que é esse arquivo que está sendo executado no seu login; sempre é bom pôr um comando “echo” para você ver o que está acontecendo.
Além disso, você precisa saber que “:” faz diferença no Unix. No seu caso você está definindo uma variável

JAVA_HOME=:/usr/java/j2sdk1.4.2_08

que tem um “:” sobrando.

Acho que você deveria definir algo como (claro que estou supondo que o seu JDK está instalado em /usr/java/j2sdk1.4.2_08! )

JAVA_HOME=/usr/java/j2sdk1.4.2_08
export JAVA_HOME

No seu caso:

JAVA_HOME=/usr/java/j2sdk1.4.2_08
CLASSPATH=.:$CLASSPATH
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH

Fala galera acrescentei as alterações sugeridas continua aparecendo a mesma
mensagem bash: javac: command not found
vou descrever mais um pouco do caso eu tenho o caminho usr/java
dentro coloquei j2sdk-1_4_2_08-linux-i586.bin
entrei no diretorio e executei o arquivo e fui editar o profile dai com as variaveis que estam acima não consigo a aparece esta mensagem bash: javac: command not found

desde ja agradeço pela ajuda

Olha, o que ocorre é o seguinte:

  • Quando você mexe no /etc/profile, as modificações só ocorrem quando você se loga e desloga (talvez seja melhor usar o seu arquivo ~/.profile)
  • Onde é que está mesmo o seu executável java? Em que diretório, afinal de contas? Não tenho acesso à sua máquina para saber exatamente onde está.
    Veja exatamente onde está o java, para poder setar corretamente o JAVA_HOME.

Estou dando um exemplo aqui, usando uma máquina Linux com o Websphere instalado. No meu caso, tanto o java quando o javac estão no PATH. É por isso que queria saber onde é que está o java na sua máquina.

thingol@linux:~> echo $JAVA_HOME
/usr/lib/java
thingol@linux:~> echo $PATH
/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome2/bin:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/java/bin:/opt/gnome/bin
thingol@linux:~> type java
java is /usr/lib/java/bin/java
thingol@linux:~> type javac
javac is hashed (/usr/lib/java/bin/javac)
thingol@linux:~> java -version
java version "1.3.1_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_04-b02)
Java HotSpot(TM) Client VM (build 1.3.1_04-b02, mixed mode)

Por exemplo, quis saber onde é que estava meu javac. Usei o seguinte comando:

thingol@linux:~> cd /
thingol@linux:/> find . -name javac -print 2>/dev/null
./usr/lib/SunJava2-1.3.1/bin/i386/green_threads/javac
./usr/SunJava2-1.3.1/bin/i386/native_threads/javac
./usr/lib/SunJava2-1.3.1/bin/javac
./usr/lib/SunJava2-1.3.1/jre/bin/i386/green_threads/javac

Isso me diz que javac está em ./usr/lib/SunJava2-1.3.1/bin/javac .

No Suse tem 2 arquivos dentro de profile.d, o java.csh e o java.sh em qual deles eu tenho que mexer? ou eu posso apagar eles e colocar só um java.sh com as declarações nesses arquivos tem muitas verificaçoes, inclusive para saber se a vm é da sun ou da ibm.

fala galera ainda sou muito leigo ainda no linux eu creio que esteja
usr/java onde esta meu bin juntamente com java ja instalado

Pois é, como já disse acima, abra um terminal no Linux, e digite os comandos:

cd /
find . -name javac -print 2>/dev/null

Aí você vai ver onde está realmente o javac (compilador Java).