gpt4 book ai didi

java - 从动态生成的类路径中排除 jar?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:23:33 26 4
gpt4 key购买 nike

我正在从 bash 脚本启动我的 java 服务器。服务器已经“提供”了对第三方 jar 的依赖。但是,其中一些 jar 与我的应用程序中的 jar 冲突,需要从类路径中排除...

目前,我只需要排除一个 jar ,所以这个成语让我明白了

EXTERNAL_JARS=$(find "${EXTERNAL_LIB}" -name 'slf4j-log4j12-1.4.3.jar' -prune -o -type f -name '*.jar' -printf ':%p' )
CLASSPATH=${CLASSPATH}${EXTERNAL_JARS}

当外部 jar 数量为 20-30 且排除的 jar 数量为 ~ 5 时,是否有更好的使用方法?

最佳答案

这会起作用,尽管它假设您的文件名中没有空格。

EXCLUDED="slf4j-log4j12-1.4.3.jar
some-other-library.jar
something-else.jar"

EXTERNAL_JARS=$(
find "${EXTERNAL_LIB}" -type f -name '*.jar' \
| grep -v -F"$EXCLUDED" \
| xargs \
| tr ' ' ':'
)

CLASSPATH=${CLASSPATH}:${EXTERNAL_JARS}

这里的想法是使用grep -v -F和一个多行字符串变量来过滤掉排除的jar。

当你这样做时,你不能再在 find 中使用 -printf 标志,所以你将它替换为 xargs | tr ' ' '-'.这里 xargs 将连接所有 jar,用空格分隔它们,tr 命令用冒号替换这些空格。同样,如果您的路径中没有空格,这将起作用。

关于java - 从动态生成的类路径中排除 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25451641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com