我正在使用最新的TomCat版本,并且最近安装了Eclipse Java EE版本,因此它也是最新版本。 顺便说一句,我确实有最新版本的 JAVA SE (JDK)。
这是我的课程:
package jsp.demo;
public class ClassForJSP {
public static String lowerCase(String data) {
return data.toLowerCase();
}
}
这是我真正简单的jsp代码:
<%@page import="jsp.demo.ClassForJSP"%>
<html>
<body>
Let's make THIS STATEMENT lower case: <%= ClassForJSP.lowerCase("THIS STATEMENT") %>
</body>
</html>
我收到此错误:
类型异常报告
消息无法为JSP编译类:
说明服务器遇到意外情况, 阻止它满足请求。
org.apache.jasper.JasperException异常:无法编译类 对于JSP:
在生成的Java文件[D:\ Java]中的第[14]行发生错误 Projects.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ work \ Catalina \ localhost \ jspdemo \ org \ apache \ jsp \ callJavaClass_jsp.java] 只能导入类型。 jsp.demo.ClassForJSP解析为 包装
jsp文件[/callJavaClass.jsp]中的第[4]行发生错误: ClassForJSP无法解析1:<%@ page import =“ jsp.demo.ClassForJSP”%> 2:3:4:让我们 本声明的小写字母:<%= ClassForJSP.lowerCase(“本声明”) %> 5:6:
Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:213) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:473) org.apache.jasper.compiler.Compiler.compile(Compiler.java:392) org.apache.jasper.compiler.Compiler.compile(Compiler.java:362) org.apache.jasper.compiler.Compiler.compile(Compiler.java:346) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
注意服务器中提供了根本原因的完整堆栈跟踪 日志。
Apache Tomcat / 9.0.14
答案 0 :(得分:0)
此消息告诉您:
Only a type can be imported. jsp.demo.ClassForJSP resolves to a package
您的Java类的源代码指示该软件包为jsp.demo
。但是在运行时,JSP编译器发现了一个名为jsp.demo.ClassForJSP
的包(即类路径上的目录)。
很显然,类路径出了问题……并且JSP编译器发出了一个红旗。
怎么来?
您需要亲自查看所有这些可能性。