Jar文件没有';当附加到末尾时,不能添加到java类路径

Jar文件没有';当附加到末尾时,不能添加到java类路径,java,shell,classpath,Java,Shell,Classpath,我有一个名为$CLASSPATH的环境变量,我使用它作为java类路径来运行特定的java代码 这个$CLASSPATH变量相当长。其大小约为66427字节() 这就是奇怪的行为 当我将某个jar文件(比如bar.jar)附加到$CLASSPATH的开头时,jar文件被添加到类路径中,我的代码运行良好 我在shell脚本中这样做,如下所示 CLASSPATH=/home/foo/bar.jar:$CLASSPATH 但是,当我在$CLASSPATH的端添加bar.jar时,我的代码会出现异常,因

我有一个名为
$CLASSPATH
的环境变量,我使用它作为java类路径来运行特定的java代码

这个
$CLASSPATH
变量相当长。其大小约为66427字节()

这就是奇怪的行为

当我将某个jar文件(比如
bar.jar
)附加到
$CLASSPATH
开头时,jar文件被添加到类路径中,我的代码运行良好

我在shell脚本中这样做,如下所示

CLASSPATH=/home/foo/bar.jar:$CLASSPATH

但是,当我在
$CLASSPATH
端添加bar.jar时,我的代码会出现异常,因为缺少
bar.jar
文件

CLASSPATH=$CLASSPATH:/home/foo/bar.jar

为什么会有这种奇怪的行为

我有什么遗漏吗

更新:

如果适用,请查看通过shell上的
xargs--show limits
命令生成的输出

foo@foo-laptop:~$ xargs --show-limits
Your environment variables take up 3632 bytes
POSIX upper limit on argument length (this system): 2091472
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2087840
Size of command buffer we are actually using: 131072
这对你有帮助

它说:

尝试:
xargs——显示限制

您的环境变量占用了2446字节
POSIX
参数长度上限(此系统):
2092658
POSIX
参数长度的最小允许上限(所有系统):
4096
我们实际可以使用的最大命令长度:
2090212
我们实际使用的命令缓冲区大小:
131072
每个参数没有限制,但整个命令行长度有一个总长度。在我的系统(Fedora15/zsh)中,它接近2Mb。(第4行)


检查生成的$CLASSPATH的大小

当环境变量如
CLASSPATH
的值长度有限制时,可以在路径的某些部分尝试通配符

根据文件:

如果目录
foo
包含
a.jar
b.jar
c.jar
, 然后将类路径
foo/*
扩展为
foo/a.jar;foo/b.jar;foo/c.jar
,该字符串将是 系统属性

当同一路径中有如此多的
.class
.jar
文件时,请使用以下语法:

CLASSPATH=/home/foo/*
CLASSPATH=$CLASSPATH:/home/bar/*
请参阅


谢谢ADi!my
$CLASSPATH
变量的大小为66427字节。根据
xargs--show limits
命令的输出:
您的环境变量占用3632字节。因此,如果我的$CLASSPATH大小超过了3632这个限制,我不应该收到错误或警告吗?但是,我没有收到这样的错误/警告。目前,我找不到使用您的建议的方法,因为在我的案例中,我根据特定条件使用脚本逐个选择jar文件。然而,记住这个“通配符”方法总有一天会对我有所帮助。谢谢你,笨蛋!