是啥导致我的 servlet 在运行时出现“此驱动程序不支持 Java 运行时环境 (JRE) 1.7 版...”? [复制]

Posted

技术标签:

【中文标题】是啥导致我的 servlet 在运行时出现“此驱动程序不支持 Java 运行时环境 (JRE) 1.7 版...”? [复制]【英文标题】:What causes "Java Runtime Environment (JRE) version 1.7 is not supported by this driver..." at runtime in my servlet? [duplicate]是什么导致我的 servlet 在运行时出现“此驱动程序不支持 Java 运行时环境 (JRE) 1.7 版...”? [复制] 【发布时间】:2014-07-20 14:14:21 【问题描述】:

我希望能够单击 html 按钮并让它调用 Java 内部的方法。是否有不止一种方法可以完成这项任务。

我也想看看这个例子中的错误来自哪里。它不会编译。

Java 代码:

import java.io.IOException;

@WebServlet("/myservlet")
public class MyServlet extends HttpServlet 

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        MyClass myClass = new MyClass();

        if (request.getParameter("button1") != null) 
            myClass.function1();
         else if (request.getParameter("button2") != null) 
            myClass.function2();
         else if (request.getParameter("button3") != null) 
            myClass.function3();
         
        request.getRequestDispatcher("/WEB-INF/some-result.jsp").forward(request, response);
    



class MyClass 
    void function1() 
        System.out.println("Button 1");
    

    void function2() 
        System.out.println("Button 2");
    

    void function3() 
        System.out.println("Button 3");
    

html代码:

<html>
<head>
  <title>Test Button</title>
</head>
<body>

<form action="$pageContext.request.contextPath/myservlet" method="post">
    <input type="submit" name="button1" value="Button 1" />
    <input type="submit" name="button2" value="Button 2" />
    <input type="submit" name="button3" value="Button 3" />
</form>


</body>
</html>

错误:

May 30, 2014 1:16:54 PM com.microsoft.sqlserver.jdbc.SQLServerConnection <init>
SEVERE: Java Runtime Environment (JRE) version 1.7 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
Exception in thread "main" java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.7 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.<init>(SQLServerConnection.java:304)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1011)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at testpak.DbTest.testQuery(DbTest.java:19)
    at testpak.DbTest.main(DbTest.java:30)

那个sqljdbc4jar。在我的引用库中。是否还有其他需要的地方?

【问题讨论】:

首先,它正在编译。您有运行时错误。而且错误很清楚,告诉你需要做什么:Java Runtime Environment (JRE) version 1.7 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0. 仅供参考,当您对错误有疑问时,请阅读堆栈跟踪并包含引发错误的代码 (testpak.DbTest.testQuery()) sqljdbc4.jar 包含在我引用的库中。但在这个例子中,我并不是真的在使用 SQL,而只是尝试调用一些方法。 您总是可以告诉 Eclipse 在 JDK6 下运行它以确保这是问题所在。 【参考方案1】:

根据您自己的屏幕截图,您同时引用了sqljdbc.jarsqljdbc4.jar。您应该只引用一个(在这种情况下:sqljdbc4.jar)。

这些 jar 文件包含相同的驱动程序类(尽管确切的实现可能不同)。类加载器从类路径中的第一个 jar 加载类,并忽略第二个 jar 中的类,因为它已经加载了同名的类。

【讨论】:

以上是关于是啥导致我的 servlet 在运行时出现“此驱动程序不支持 Java 运行时环境 (JRE) 1.7 版...”? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

是啥导致 Skrill 汇款时出现错误 LOCK_LEVEL_9?

从 Tomcat servlet 连接到 HTTP 服务器时出现 AccessControlException

请教一下大神,我使用android killer编译时出现了aapt已停止运行,是啥问题

运行码头时出现错误 NoClassDefFoundError

格盘时出现“驱动器正在使用中。另一个程序或进程正在使用此驱动器。是不是仍要对其进行格式化”

在vs 2012中运行fortran语言时出现提示Debug win 32需要win 32平台支持编译,是啥情况?