写了一个java工程后,因为那个jar是一个系列的,所以前期没有挑,直接全部要引用,差不多有200多个。
所以写好后,就需要排除没有用的jar,
基本思想
lib是引用包位置
dellib是存放排除jar包的位置
1.引用lib包下所有的jar,运行程序,以jar包个数决定执行次数,因为每次都是排除一个jar
2.移除一个jar,如果能能正常运行,执行步骤1.
3.移除一个jar,如果不能正常运行,把移除的jar放回去,执行步骤1.
小技巧:
1.循环读取jar包
for tradePortalJar in ../gislib/*.jar;
do
CLASSPATH=”
CLASSPATH":"
tradePortalJar”
done
2.处理脚本
bin=$(dirname ${BASH_SOURCE-$0})
bin=$(cd $bin; pwd)
cd $bin/../gislib
for tradePortalJar in *.jar;
do
mv $tradePortalJar ../dellib/
echo $tradePortalJar
cd $bin
./b.sh > lib.out 2>&1
info=`grep NoClassDefFoundError lib.out`
if [[ $info =~ "NoClassDefFoundError" ]];then
echo "del :$tradePortalJar"
mv ../dellib/$tradePortalJar ../gislib
fi
cd $bin/../gislib
done
3.b.sh
./splus.sh <<EOF
load shapefile etltest -file ../gisdata/shapetest1.shp;
exit;
EOF