首先我运行的是 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:."
然后我运行“source/etc/environment”以确保包含更改。 然后我尝试使用这个编译我的简单测试程序:
javac 测试.java
它会抛出一些错误,但是当我这样编译时:
javac -cp/home/travis/freetts/lib/freetts.jar:/home/travis/freetts/lib/jsapi.jar:.测试.java
它工作得很好,这让我相信由于某种原因 javac 没有看到 CLASSPATH 环境变量?我可以回显它和终端中的所有内容:
echo $CLASSPATH 返回我输入的内容。
如有任何帮助,我们将不胜感激。
最佳答案
如果将 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:."
我猜 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.
关于Ubuntu 中的 Java 类路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2854356/