(See also this answer, which directly speaks to the major and minor version of java class resources: List of Java class file format major version numbers?.)
Most probably, the major version of the class is higher than is supported in your environment.
You'll need to look at the actual class bytes to tell what the major version is of "StaticLoggerBinder" to know exactly why the exception is occurring. That is, the bytes of this entry:
org/slf4j/impl/StaticLoggerBinder.class
Of the JAR file:
slf4j-simple-1.7.5.jar
Those manifest properties may provide good information from the build steps which were used when JAR was packaged, but they aren't what the exception is looking at. The exception is looking at the major and minor version values which are stored in the raw class bytes.
Looking at the first few bytes of a class file with a hex editor (e.g., emacs in hexl-mode), will show something like this:
00000000: cafe babe 0000 0032 0071 0a00 0f00 4809 .......2.q....H.
00000010: 001f 0049 0900 4a00 4b0a 004c 004d 0800 ...I..J.K..L.M..
Using the class format documentation from Oracle:
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html
ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
cp_info constant_pool[constant_pool_count-1];
We see that the first eight bytes must be the "magic" value 0xcafebabe, the next four bytes are the minor version (which is usually 0x00), and the next four bytes are the major version. Through J2SE 9, the defined valid major and minor version values are:
JDK_11(45, 3, "JDK 1.1"), // "0x2D"
JDK_12(46, 0, "JDK 1.2"), // "0x2E"
JDK_13(47, 0, "JDK 1.3"), // "0x2F"
JDK_14(48, 0, "JDK 1.4"), // "0x30"
JDK_50(49, 0, "J2SE 5.0"),// "0x31"
JDK_60(50, 0, "J2SE 6.0"),// "0x32"
JDK_7 (51, 0, "J2SE 7"), // "0x33"
JDK_8 (52, 0, "J2SE 8"), // "0x34"
JDK_9 (53, 0, "J2SE 9"); // "0x35"
The sample bytes show a major version of 0x32, or J2SE 6.0.
That table is taken from this utility enum:
public enum JDKVersion {
JDK_11(45, 3, "JDK 1.1"), // "0x2D"
JDK_12(46, 0, "JDK 1.2"), // "0x2E"
JDK_13(47, 0, "JDK 1.3"), // "0x2F"
JDK_14(48, 0, "JDK 1.4"), // "0x30"
JDK_50(49, 0, "J2SE 5.0"),// "0x31"
JDK_60(50, 0, "J2SE 6.0"),// "0x32"
JDK_7 (51, 0, "J2SE 7"), // "0x33"
JDK_8 (52, 0, "J2SE 8"), // "0x34"
JDK_9 (53, 0, "J2SE 9"); // "0x35"
private JDKVersion(int majorVersion, int minorVersion, String textValue) {
this.majorVersion = majorVersion;
this.minorVersion = minorVersion;
this.textValue = textValue;
}
private final int majorVersion;
private final int minorVersion;
private final String textValue;
// getters omitted ...
}
With the "majorVersion" and "minorVersion" obtained from the raw byte values of the class resource which is being examined.