com/mysql/jdbc/Driver:不支持的 major.minor 版本 52.0。

8

当我使用mysql-connector-java-6.0.3.jar部署我的war文件到Apache Tomcat/7.0.52 (Ubuntu) JVM: 1.7.0_79-b14上时,我遇到了这个问题,它是用JDK 1.7编译的。

java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0 (unable to load class com.mysql.jdbc.Driver)
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2948)
    org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Class.java:191)
    com.tdk.callbacks.CallBacksListener.doGet(CallBacksListener.java:45)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

当我使用1.8编译时,会出现以下情况:

java.lang.UnsupportedClassVersionError: com/tdk/callbacks/CallBacksListener : Unsupported major.minor version 52.0 (unable to load class com.tdk.callbacks.CallBacksListener)
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2948)
    org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    java.lang.Thread.run(Thread.java:745)

还有这一个1.6版本:

java.lang.Error: Unresolved compilation problem: 
    Multi-catch parameters are not allowed for source level below 1.7

你是否愿意给被接受的答案点个赞呢? :) - Nikem
1个回答

14

问题并不在编译上。问题在于您尝试使用Java 7运行已部署应用程序的Tomcat。由于您的MySQL驱动程序和可能的应用程序都是使用Java 8编译的,因此您必须使用Java 8来运行Tomcat。


1
嗨。我使用Java 7在RHEL上编译代码。我有MySQL 8.0.17和mysql-connector-java-8.0.17.jar,但我仍然遇到相同的错误。该代码只能使用Java 7进行编译,那么应该选择哪种正确的组合来解决我的错误?感谢任何帮助 @Nikem - Babar Baig
1
正如答案中所说:“您必须使用Java 8来运行”您的应用程序。 - Nikem
基本上,我正在尝试构建Apache Ranger。要求使用Java 7,因为Apache Ranger有一些限制。所以我成功地使用以下内容构建和安装了Apache Ranger。
  1. Java 7
  2. MySQL 5.1
  3. Python 2.7
  4. JDBC Connector 5.1.6
感谢@Nikem
- Babar Baig
谢谢,你是救命恩人! - M E S A B O

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接