検索機能を使用すると、httpステータス500エラーが発生します。それはそれを主張します
エラーレポート
HTTPステータス500 –内部サーバーエラー
タイプ例外レポート
メッセージSearchServletは、最新バージョンのJavaランタイム(クラスファイルバージョン53.0))によってコンパイルされています。このバージョンのJavaランタイムはクラスファイルバージョンのみを認識します52.0まで(クラス[SearchServlet]をロードできません)
説明サーバーで予期しない状態が発生したため、要求を実行できませんでした。
例外Java.lang.UnsupportedClassVersionError:SearchServletは、最新バージョンのJavaランタイム(クラスファイルバージョン53.0)、このバージョンのJavaランタイムは、52.0までのクラスファイルバージョンのみを認識します(クラス[SearchServlet]をロードできません)org.Apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.Java:2286)org.Apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase。 Java:811)org.Apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.Java:1260)org.Apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.Java:1119)org.Apache.catalina.authenticator.AuthenticatorBase。 invoke(AuthenticatorBase.Java:488)org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:81)org.Apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.Java:650)org.Apache.catalina。 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(AbstractProtocol.Java:790) 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(不明なソース)Java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)org.Apache.Tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.Java:61)Java.lang.Thread.run(不明なソース)
私はコンパイラー準拠レベル9を使用しています。私は、最新だと思ったJRE 1.8を持っています。 Java 9をインストールしようとすると、Eclipse Marketplaceを使用すると、
http://download.Eclipse.org/Eclipse/updates/none.
にリポジトリが見つかりません
これらすべてを考慮すれば、私は完全に最新の状態になっていると思いますが、データベース内のレコードを検索できないのはなぜですか。
<!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>
サーブレットコードを検索
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");
}
結果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>
「コンパイラーに行くときは、コンパイラー準拠レベル9を使用しています。」バージョン52.0はJava 8; 53.0はJava 9.であると想定しています。Java 9でコンパイルされたコードを実行しようとしていますon Java 8の場合、エラーが発生します。コンプライアンスバージョンをJava 8.に変更してください。
問題を一時的に修正するには、次の手順を実行します。
Project menu
> Properties
> Java Compiler
> Compiler compliance level
> 1.8
永続的な修正には、おそらくJDK 9のインストールが含まれます。
FYI 1.8はJava 8と呼ばれるものです。
私は最近、C#への進出後にJavaに戻り、JavaをインストールしたことがないクリーンなシステムにEclipse Oxygenをインストールしました。これはデフォルトのすべてで、Eclipse Oxygenを新しくインストールしたのに、どういうわけか、または他のEclipseは、インストールされているjdkと一致する独自のパラメーターを取得できません。これは私が作成した2番目のプロジェクトであり、2回目にこの頭痛の種に遭遇しました。