Java API to find out the JDK version a class file is compiled for?

前端 未结 8 1012
星月不相逢
星月不相逢 2020-11-28 07:52

Are there any Java APIs to find out the JDK version a class file is compiled for? Of course there is the javap tool to find out the major version as mentioned in here. Howev

8条回答
  •  无人及你
    2020-11-28 08:08

    import java.io.*;
    
    public class ClassVersionChecker {
        public static void main(String[] args) throws IOException {
            for (int i = 0; i < args.length; i++)
                checkClassVersion(args[i]);
        }
    
        private static void checkClassVersion(String filename)
            throws IOException
        {
            DataInputStream in = new DataInputStream
                (new FileInputStream(filename));
    
            int magic = in.readInt();
            if(magic != 0xcafebabe) {
                System.out.println(filename + " is not a valid class!");;
            }
            int minor = in.readUnsignedShort();
            int major = in.readUnsignedShort();
            System.out.println(filename + ": " + major + " . " + minor);
            in.close();
        }
    }
    

    The possible values are :

    major  minor Java platform version 
    45       3           1.0
    45       3           1.1
    46       0           1.2
    47       0           1.3
    48       0           1.4
    49       0           5
    50       0           6
    51       0           7
    52       0           8
    53       0           9
    54       0           10
    55       0           11
    56       0           12
    57       0           13
    58       0           14
    

提交回复
热议问题