无法为JSP:Tomcat 9

时间:2019-01-24 03:13:52

标签: java jsp

我正在使用最新的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

1 个答案:

答案 0 :(得分:0)

此消息告诉您:

Only a type can be imported. jsp.demo.ClassForJSP resolves to a package

您的Java类的源代码指示该软件包为jsp.demo。但是在运行时,JSP编译器发现了一个名为jsp.demo.ClassForJSP的包(即类路径上的目录)。

很显然,类路径出了问题……并且JSP编译器发出了一个红旗。

怎么来?

  • 也许您正在使用部署到服务器的Web应用程序中的“陈旧” JAR文件?
  • 也许您错过了构建或部署步骤?
  • 也许您手动组装了JAR文件或包含该文件的WAR文件,并弄错了结构?
  • 也许您正在Tomcat服务器上进行“实时”操作,并且已将“ .class”文件复制到了错误的位置?
  • 可能还有其他事情吗?

您需要亲自查看所有这些可能性。