在mac执行一个命令时
java -cp .:/release/bin/../conf:/release/bin/../lib/* com.ex.TestApplication
发现报错
zsh: no matches found: .:/release/bin/../conf:/release/bin/../lib/*
那么这是一个什么样的情况呢?
原因是在Zsh终端中,通配符(例如*)默认是开启的,这可能导致java命令中的类路径无法正确解析,可以通过执行setopt +o nomatch命令来禁用通配符,要注意setopt命令只能在交互式shell中使用,而不是在脚本中使用。当然也可以在~/.zshrc中进行配置
继续写, 一般都需要在~/.zshrc中配置, 那用户说了, 我不想这样配置, 就想在脚本中实现怎么办?
那就来分析一下这个问题的本质, 就是我们使用了/lib/*, 如果你把每一个jar拼装起来, 倒也没有这个问题了
for d in /abc/../lib/*.jar; do
CLASSPATH="$CLASSPATH:$d"
done
CLASSPATH="${CLASSPATH#:}"
注意把多出来的符号去掉
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。