Quelles sont les causes "Java Runtime Environment (JRE) version 1.7 n'est pas pris en charge par ce pilote..." à l'exécution dans mon servlet? [dupliquer]


Cette question a déjà une réponse ici:

Je veux pouvoir cliquer sur un bouton HTML et le faire appeler une méthode à l'intérieur de Java. Est-il plus d'une façon d'accomplir cette tâche.

Je voudrais aussi voir où le les erreurs sont à venir à partir de cet exemple. Il ne compile pas.

Code 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");
    }
}

Code 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>

Erreur:

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)

entrez la description de l'image ici

entrez la description de l'image ici

Que sqljdbc4jar. est dans ma bibliothèque référencée. Est-il un autre endroit qu'il doit être?

Author: nsfyn55, 2014-05-30

1 answers

Selon votre propre capture d'écran, vous référencez à la fois sqljdbc.jar et sqljdbc4.jar. Vous ne devez en référencer qu'un (dans ce cas: sqljdbc4.jar).

Ces fichiers jar contiennent les mêmes classes de pilotes (bien que l'implémentation exacte puisse être différente). Le classloader charge les classes du premier jar sur le chemin de classe et ignore celles du second car il a déjà chargé une classe du même nom.

 11
Author: Mark Rotteveel, 2014-05-31 11:14:44