linux java classpath main 带参数,Java classpath - Linux

问题

I am trying to understand how classpath really works. After searching around the web this is where I have reached so far:

I have added

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"

at /etc/environment. I am running Ubuntu by the way.

Java finds the path and compiles without problem.

The problem is that if I change the CLASSPATH and then I do: source /etc/environment, the new CLASSPATH is not applied. It is applied if and only if I restart the system. For example if I delete the

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"

line, then I do source /etc/environment and I finally do echo $CLASSPATH, what I get is /home/foo:/home/foo/Java_code/my_code. I think I should get an empty line, shouldn't I?

Is there a way to apply the changes in PATH or CLASSPATH variables immediately without having to restart the system?

It might help you know that the /etc/environment file originally contained only the following line:

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

Thank you for your time.

回答1:

I think you should not put any paths that a local to your home directory in a system wide file. I would leave /etc/environment well alone, unless you provide some changes, that are necessary or beneficial to all users.

Put any changes to the CLASSPATH in your .bashrc in your home directory.

CLASSPATH=$CLASSPATH:/home/foo:/home/foo/Java_code/my_code

export CLASSPATH

This way you can source it and any newly started bash will have the settings right at once.

回答2:

export CLASSPATH=""

or better

unset CLASSPATH

will delete an existing Classpath. There are multiple locations where you can set or unset the classpath - a missing entry will not unset it.

回答3:

When you remove

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"

line and then source ... it wouldn't remove the CLASSPATH because it has already been set. It doesn't clear the variables which have already been defined.

回答4:

The /etc/environment file is not a normal shell script; it is not executed as a shell script when you boot or login into your system. So running it with source /etc/environment does not the same as when you normally boot your system.

See: Ubuntu environment variables

/etc/environment - This file is specifically meant for system-wide environment variable settings. It is not a script file, but rather consists of assignment expressions, one per line. Specifically, this file stores the system-wide locale and path settings.

来源:https://stackoverflow.com/questions/9329650/java-classpath-linux

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值