jar内のクラスファイルが指定のJVMバージョンか検査する
グループにjava 1.5だってのにいつも1.6を使う人がいるので適当に作ってみた。ほんと勘弁してほしい。
遅いです。
javaVersionChecker.sh
#!/bin/sh BASE_DIR=`pwd` WORK_DIR=$BASE_DIR/tmp_$$ TARGET_JAR=$1 TARGET_VERSION=$2 TMP_CLASS_LIST=$TARGET_JAR.tmp.$$ trap "cd $WORK_DIR;rm -f $TMP_CLASS_LIST ;cd $BASE_DIR ; rm -Rf $WORK_DIR; exit 1" 1 2 3 15 mkdir $WORK_DIR cp $TARGET_JAR $WORK_DIR/$TARGET_JAR cd $WORK_DIR cat $TARGET_JAR |jar -t |grep \.class$ > $TMP_CLASS_LIST cat $TARGET_JAR | jar -x for f in `cat $TMP_CLASS_LIST` do c=`echo $f | sed -e 's/.*\///g' |sed -e 's/\.class//g'` d=`echo $f | sed -e 's/[^\/]*$//g'` #|sed -e 's/\.class//g'` cd $d v=`javap -v $c | grep 'major version: ' |sed -e 's/\s*major version: //g'` if [ $v -gt $TARGET_VERSION ]; then echo "Bad Verison Number! $TARGET_JAR" break fi cd $WORK_DIR done if [ -f $TMP_CLASS_LIST ]; then rm -f $TMP_CLASS_LIST fi cd $BASE_DIR if [ -d $WORK_DIR ] ; then rm -Rf $WORK_DIR fi
使い方
javaVersionChecker.sh xxx.jar 48