File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 22
33# class-version.sh - find the Java version which wrote a JAR file
44
5- for jar in " $@ "
6- do
7- # find the first class of the JAR
8- class=" $( jar tf " $jar " | grep ' \.class' | head -n 1 | sed ' s/\//./g' | sed ' s/\.class$//' ) "
9-
10- if [ -z " $class " ]
11- then
12- echo " $jar : No classes"
13- continue
14- fi
15-
5+ class_version () {
166 # extract bytes 4-7
17- info=" $( unzip -p " $jar " " $( jar tf " $jar " | grep \. class$ | head -n 1 ) " | head - c 8 | hexdump -s 4 -e ' 4/1 "%d\n" "\n"' ) "
7+ info=$( head -c 8 | hexdump -s 4 -e ' 4/1 "%d\n" "\n"' )
188 minor1=" $( echo " $info " | sed -n 1p) "
199 minor2=" $( echo " $info " | sed -n 2p) "
2010 major1=" $( echo " $info " | sed -n 3p) "
5545 esac
5646
5747 # report the results
58- echo " $jar : $version ($major .$minor )"
48+ echo " $version ($major .$minor )"
49+ }
50+
51+ first_class () {
52+ jar tf " $1 " | grep ' \.class' | head -n 1
53+ }
54+
55+ for file in " $@ "
56+ do
57+ case " $file " in
58+ * .class)
59+ version=$( cat " $file " | class_version)
60+ ;;
61+ * .jar)
62+ class=$( first_class " $file " )
63+ if [ -z " $class " ]
64+ then
65+ echo " $file : No classes"
66+ continue
67+ fi
68+ version=$( unzip -p " $file " " $class " | class_version)
69+ ;;
70+ * )
71+ >&2 echo " Unsupported file: $file "
72+ continue
73+ esac
74+
75+ # report the results
76+ echo " $file : $version "
5977done
You can’t perform that action at this time.
0 commit comments