web-dev-qa-db-fra.com

SearchServlet a été compilé par une version plus récente du Runtime Java

Lorsque j'utilise ma fonction de recherche, j'obtiens une erreur de statut http 500. Il prétend que

Rapport d'erreur

HTTP Status 500 - Erreur de serveur interne

Rapport d'exception de type

Message SearchServlet a été compilé par une version plus récente du Runtime Java (fichier de classe version 53.0), cette version du Runtime Java Runtime ne reconnaît que les versions des fichiers de classe jusqu'à 52,0 (impossible de charger la classe [SearchServlet])

Description Le serveur a rencontré une condition inattendue qui l'a empêché de répondre à la demande.

Exception Java.lang.UnsupportedClassVersionError: SearchServlet a été compilé par une version plus récente du Runtime Java (fichier de classe version 53.0), cette version du Java Le runtime reconnaît uniquement les versions des fichiers de classe jusqu'à 52.0 (impossible de charger la classe [SearchServlet]) org.Apache.catalina.loader.WebappClassLoaderBase.findClassInternal (WebappClassLoaderBase.Java:2286) org.Apache.catalina.loader.WebappClassLoaderBase.findClass (Webapp Java: 811) org.Apache.catalina.loader.WebappClassLoaderBase.loadClass (WebappClassLoaderBase.Java:1260) org.Apache.catalina.loader.WebappClassLoaderBase.loadClass (WebappClassLoaderBase.Java:1119) org.ApacheicAuthenticBas invoke (AuthenticatorBase.Java:488) org.Apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.Java:81) org.Apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.Java:pache.catalogue). connector.CoyoteAdapter.service (CoyoteAdapter.Java:342) org. Apache.coyote.http11.Http11Processor.service (Http11Processor.Java:803) org.Apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.Java:66) org.Apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractPr7ocol) org.Apache.Tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.Java:1459) org.Apache.Tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.Java:49) Java.util.concurrent.ThreadPoolExecutor. runWorker (source inconnue) Java.util.concurrent.ThreadPoolExecutor $ Worker.run (source inconnue) org.Apache.Tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.Java:61) Java.lang.Thread.run ( Source inconnue)

J'utilise le niveau de conformité du compilateur 9. J'ai JRE 1.8 que je pensais être le plus récent. Lorsque j'essaie d'installer Java 9, en utilisant Eclipse Marketplace, il me dit que

Aucun référentiel trouvé sur http://download.Eclipse.org/Eclipse/updates/none.

Je crois que, compte tenu de tout cela, je suis complètement à jour, mais comment ne puis-je pas rechercher des enregistrements dans la base de données?

<!DOCTYPE html>
<html>

<head>
  <meta charset="ISO-8859-1" <title>Add contact to Phone Book</title>
  <h1>Add contact to Phone Book</h1>
</head>

<body>
  <form name="submitInfo" method="get" action="AddEntryServlet" First Name: <input type="text" name="firstName" />
  <br/>
  <br/>
   Last Name: <input type="text" name="lastName" />
  <br/>
  <br/>
   Area Code: <input type="number" name="areaCode" />
  <br/>
  <br/>
   Phone Number: <input type="number" name="phoneNumber" />
  <br/>
  <br/>
  <input type="submit" value="Submit" />

  </form>
</body>
<h1>Search for Contact in Phone Book</h1>

<body>
  <form name="searchInfo" method="get" action="SearchServlet">
    Search First Name: <input type="text" name="searchFirstName" />
    <br/>
    <br/>

    <input type="submit" name="action" value="search" />

  </form>
</body>

</html> 

Rechercher le code de servlet

import Java.io.IOException; 
import Java.io.PrintWriter; 
import Java.util.List;

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Query; import org.hibernate.Session;

import entities.Tbphonebook; import util.HibernateUtil;

/**  * Servlet implementation class SearchServlet  */
@SuppressWarnings("deprecation")
@WebServlet("/SearchServlet")
public class SearchServlet extends HttpServlet {    private static final long
serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public SearchServlet() {
super();
  // TODO Auto-generated constructor stub
  }

/**      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)      */
@SuppressWarnings({ "deprecation","unchecked" })
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    String firstName = request.getParameter("searchFirstName");         
    @SuppressWarnings("rawtypes") 
    Query query = Session.createQuery("from Tbphonebook where firstname = ?");


List<Tbphonebook> persons = (List<Tbphonebook>) query.getResultList();



session.getTransaction().commit();      
session.close();



request.setAttribute("persons", persons);
request.getRequestDispatcher("searchResults.jsp").forward(request,response);
response.sendRedirect("searchResults.jsp");


}

Résultats jsp

%@ page language="Java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1"> <title>Insert title here</title> </head>
<h1>Search Results</h1>
<h1>List Books:</h1>
<table class="table table-boardered table-striped" id="searchresults">      
    <tr>            
        <th>First Name</th>         
        <th>Last Name</th>
        <th>Area Code</th>          
        <th>PhoneNumber</th>
    </tr>       
</table>
<script>
        $(document).ready(function(){
        $.getJSON("persons", function(data){
            var persons_data = '';
            $.each(data, function(key, value){
                person_date += '<tr>';
                person_data += '<td>'+value.Firstname+'</td>';
                person_data += '<td>'+value.Lastname+'</td>';
                person_data += '<td>'+value.Areacode+'</td>';
                person_data += '<td>'+value.Phonenumber+'</td>';
                person_date += '</tr>';
            }
            );
        $('#searchresults').append(persons_data);
        });
    });
 </script>
<%
    String message = (String) request.getAttribute("message");
    if(!(message == null)){
        out.println(message);
        }else{
            message= "";
            out.println(message);
        }
%>

 </html>
6
Kyle

"Quand je vais sur mon compilateur, j'utilise le niveau de conformité 9." La version 52.0 est Java 8; je suppose que 53.0 est Java 9. Vous essayez d'exécuter du code compilé pour Java 9 sur Java 8, ce qui entraîne l'erreur que vous obtenez. Modifiez votre version de conformité en Java 8.

8
Steve11235

IDE: Eclipse Oxygen.

Pour corriger temporairement le problème, procédez comme suit:

Project menu> Properties> Java Compiler> Compiler compliance level> 1.8

Un correctif permanent implique probablement l'installation de JDK 9.

FYI 1.8 est ce que Java 8 est appelé.

Barre latérale

Je suis récemment revenu à Java après une incursion en C # et installé Eclipse Oxygen sur un système propre qui n'avait jamais eu Java installé dessus auparavant. Ce tout par défaut avec une toute nouvelle installation d'Eclipse Oxygen mais d'une manière ou d'une autre Eclipse ne peut pas obtenir ses propres paramètres pour correspondre au jdk installé. C'est le deuxième projet que j'ai créé et la deuxième fois que je rencontre ce mal de tête.

5
Eric D