我有以下名为 com 包的 Demo 的 JAVA 类
package com;
public class Demo
{
public String getMessage()
{
return "hello";
}
}
现在我想在我的index.jsp页面中调用Demo类的方法
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO- 8859-1"%>
<%@ page import="com.Demo" %>
<!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>Service Call Management</title>
</head>
<body>
<h1>
<%
Demo d = new Demo();
out.println(d.getMessage());
%>
</h1>
</body>
</html>
但我在 Eclipse Kepler 中的 Apache 7.0.35 服务器收到此错误
type Exception report
message An exception occurred processing JSP page /index.jsp at line 13
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 13
10: <body>
11: <h1>
12: <%
13: Demo d = new Demo();
14: out.println(d.getMessage());
15: %>
16: </h1>
所以请帮我解决这个问题
这是堆栈跟踪
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
这是根本原因
根本原因
javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: com/Demo : Unsupported major.minor version 51.0 (unable to load class com.Demo)
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java :912)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
org.apache.jsp.index_jsp._jspService(index_jsp.java:90)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
java.lang.UnsupportedClassVersionError: com/Demo : Unsupported major.minor version 51.0 (unable to load class com.Demo)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2908)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:126)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63)
java.lang.ClassLoader.loadClassInternal(Unknown Source)
org.apache.jsp.index_jsp._jspService(index_jsp.java:76)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
最佳答案
你的代码乍一看是正确的。合乎逻辑的解释是您没有将 Demo.class 打包到 Web 应用程序中的正确位置。您的 .war (或展开的目录)应如下所示:
application.war/
index.jsp
/WEB-INF/web.xml
/WEB-INF/classes/com/Demo.class
... additional stuff
这是最低限度的必要配置,看一下,看看是否缺少什么
在与OP交换一些想法后编辑添加真正的答案:
实际上,问题在于代码是使用比服务器中使用的运行时环境更新版本的 java 编译器进行编译的,因此出现 java.lang.UnsupportedClassVersionError
OP 报道。
关于java - 为什么我无法在JSP页面中创建某些JAVA类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20762423/