Ubuntu中的Java类路径问题

Tra*_*vis 4 java linux ubuntu classpath environment-variables

首先,我正在运行Ubuntu 9.10

我编辑了/ etc/environment文件,如下所示:

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:."
Run Code Online (Sandbox Code Playgroud)

然后我运行"source/etc/environment"以确保包含更改.然后我尝试使用以下方法编译我的简单测试程序:

javac Test.java

它会抛出一些错误,但是当我像这样编译时:

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

它工作得很好,这让我相信,由于某种原因,javac没有看到CLASSPATH环境变量?我可以在终端中回应它和所有内容:

echo $ CLASSPATH给了我放入的内容.

任何有关这方面的帮助将不胜感激.

msa*_*ord 7

如果你投入export,它会起作用/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:."
Run Code Online (Sandbox Code Playgroud)

我猜测CLASSPATH在你输出脚本之前没有设置,所以你只是设置一个局部变量.


以下是可能发生的事情的说明:

superman@metro:~$ Z=foo        # Only sets for this shell
superman@metro:~$ echo $Z
foo
superman@metro:~$ /bin/bash
superman@metro:~$ echo $Z      # Not set in sub-processes

superman@metro:~$ exit
exit
superman@metro:~$ export Z     # When exported, is part of environment
superman@metro:~$ /bin/bash
superman@metro:~$ echo $Z      # And now visible to sub-processes
foo
superman@metro:~$ exit
exit
superman@metro:~$ 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.
Run Code Online (Sandbox Code Playgroud)