我使用弹性豆茎和项目.WAR文件在AWS上托管了我的第一个EE Java Web应用程序。环境是带有Coretto 11(64位Amazon Linux 2)的Tomcat 8.5,该项目针对Tomcat 8.5进行了优化。该项目在eclipse中工作得很好,但在部署到豆茎环境中时就不好了。
这是我的项目目录:https://i.stack.imgur.com/2NG1C.png
Index.jsp中的AJAX请求:
$(document).ready(function () {
$.ajax({
type : 'POST',
url : 'ExampleServlet',
data : {},
success : function(returnValue) {
document.getElementById('test').innerHTML = 'Success';
},
error : function(req, err) {document.getElementById('test').innerHTML = 'error';}
});
});
示例Servlet:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
@WebServlet("/ExampleServlet")
public class ExampleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ExampleServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
这是一个简单的POST请求,但一旦部署,它就会一直显示错误。我没有使用Maven、SpringBoot等。
编辑:
编辑:在ssh之后,我终于找到了正确的日志示例:/var/log/tomcat/localhost.[date].log
https://imgur.com/a/Wcnp1qt
08-OCT-2022年14:11:48.182严重[http-NIO-8080-EXEC-4]org.apache.catalina.core.StandardWrapperValve.invoke分配Servlet异常[ExampleServlet]java.lang.UnsupportedClassVersionError:ExampleServlet已由较新版本的Java Runtime(类文件版本61.0)编译,此版本的Java Runtime仅识别最高为55.0的类文件版本(无法加载类[ExampleServlet])
我假设我的系统上有一个版本不匹配的JDK...我使用的是JDK 8,但Tomcat 8.5使用的是JDK 7?将尝试不同的版本并进行更新。
1条答案
按热度按时间wz1wpwve1#
Eclipse版本不匹配。将Eclipse的默认Java版本(16)替换为版本11。一切都可以编译。