服务器上抛出如下异常
java.lang.UnsupportedClassVersionError: com/Login : Unsupported major.minor version 52.0 (unable to load class com.Login)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:3255)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:1420)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1924)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1798)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:536)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:518)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:148)
经过分析是服务器上的 JDK 和编译程序的 JDK 版本不一致导致,服务器上使用的 JDK 是 7,编译程序用的 JDK 是 8,使用 JDK7 重新编译程序后,问题解决。
52.0表示 JDK 的版本。不同JDK版本编译出的class文件是不同的,通过分析编译后的class文件的前几个字节,可以找到class 和 JDK 版本的对应关系。
J2SE 8 = 52 (0x34 hex)
J2SE 7 = 51 (0x33 hex)
J2SE 6.0 = 50 (0x32 hex)
J2SE 5.0 = 49 (0x31 hex)
JDK 1.4 = 48 (0x30 hex)
JDK 1.3 = 47 (0x2F hex)
JDK 1.2 = 46 (0x2E hex)
JDK 1.1 = 45 (0x2D hex)