2010-05-18 8 views
4

Tout d'abord, je suis sous Ubuntu 9.10Java Classpath Problèmes dans Ubuntu

J'ai édité le fichier/etc/environnement pour ressembler à ceci:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 
JAVA_HOME="/usr/lib/jvm/java-6-sun-1.6.0.20" 
CLASSPATH="/home/travis/freetts/lib/freetts.jar:/home/travis/freetts/lib/jsapi.jar:." 

Je lance alors « source/etc/environnement "pour s'assurer que les changements sont inclus. Ensuite, j'essaie de compiler mon programme de test simple en utilisant ceci:

javac Test.java

Il jette quelques erreurs, mais quand je compile comme ceci:

javac -cp/home/travis/freetts/lib/freetts.jar: /home/travis/freetts/lib/jsapi.jar :. Test.java

Cela fonctionne très bien, ce qui me porte à croire que pour une raison quelconque javac ne voit pas la variable d'environnement CLASSPATH? Je peux l'écho et tout dans le terminal:

echo $ CLASSPATH me donne ce que je mets dans

Toute aide sur ce serait grandement apprécié..

+0

Quelle est la sortie de java -version? Pouvez-vous aussi lancer update-java-alternatives -l et publier la sortie Pouvez-vous inclure les messages d'erreur que vous obtenez? – lucasweb

+0

Que se passe-t-il lorsque vous exécutez java, pas javac? –

+0

Je n'ai pas de classe compilée pour exécuter java sur ... Le fichier Test.java est juste du code simple. Jette juste les erreurs comme prévu. – Travis

Répondre

7

Est-ce que cela fonctionne si vous mettez export dans /etc/environment?

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 
export JAVA_HOME="/usr/lib/jvm/java-6-sun-1.6.0.20" 
export CLASSPATH="/home/travis/freetts/lib/freetts.jar:/home/travis/freetts/lib/jsapi.jar:." 

Je devine que CLASSPATH n'est pas réglé avant le script vous source, et donc vous définissez seulement une variable locale.


est ici une illustration de ce qui pourrait se produire:

[email protected]:~$ Z=foo  # Only sets for this shell 
[email protected]:~$ echo $Z 
foo 
[email protected]:~$ /bin/bash 
[email protected]:~$ echo $Z  # Not set in sub-processes 

[email protected]:~$ exit 
exit 
[email protected]:~$ export Z  # When exported, is part of environment 
[email protected]:~$ /bin/bash 
[email protected]:~$ echo $Z  # And now visible to sub-processes 
foo 
[email protected]:~$ exit 
exit 
[email protected]:~$ help export 
export: export [-nf] [name[=value] ...] or export -p 
    NAMEs are marked for automatic export to the environment of 
    subsequently executed commands. If the -f option is given, 
    the NAMEs refer to functions. If no NAMEs are given, or if '-p' 
    is given, a list of all names that are exported in this shell is 
    printed. An argument of '-n' says to remove the export property 
    from subsequent NAMEs. An argument of '--' disables further option 
    processing. 
+0

Merci spong pour la leçon bien nécessaire dans bash variable portée! – Travis

+0

La définition d'un 'CLASSPATH' à l'échelle du système n'est pas une bonne idée - ces fichiers JAR seront alors inclus pour toute application Java exécutée sur votre système. – Jesper

+0

alors @jesper quel est le travail? que suggérez-vous? –

0

Avez-u exporter toutes les variables d'environnement dans le fichier de profil? je n'ai vu aucune commande d'export dans le fichier spécifié par u ...... utilisez export et essayez une fois ......