java - 是什么导致我的 servlet 在运行时出现 "Java Runtime Environment (JRE) version 1.7 is not supported by this driver..."?

标签 java sql-server-2008 jakarta-ee servlets jdbc

<分区>

我希望能够单击 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)

enter image description here

enter image description here

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

最佳答案

根据您自己的屏幕截图,您同时引用了 sqljdbc.jarsqljdbc4.jar。您应该只引用一个(在本例中:sqljdbc4.jar)。

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

关于java - 是什么导致我的 servlet 在运行时出现 "Java Runtime Environment (JRE) version 1.7 is not supported by this driver..."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23961030/

相关文章:

失败时 SQL 将结果写入 XML

sql - 如何设计从行创建动态列的查询

java - 有没有办法下载所有 Java EE 接口(interface)?

java - 在 powermock 上的静态方法内模拟静态方法

java - 如何使用maven创建示例Openwhisk-Java应用程序并为其创建Docker镜像

java - 如何使用 Guice 向 bean 注入(inject)简单的配置参数?

java - spring + jsp + hibernate 中的 NotReadablePropertyException

java - 在用户对列进行排序后访问隐藏的 JTable 模型列

sql - 查询 SQL 字段是否包含多个值中的任意一个

java - 当方法在 jUnit 中抛出异常时