【问题标题】:Unable to compile class for JSP:Tomcat 9无法为 JSP:Tomcat 9 编译类
【发布时间】:2019-01-24 03:13:52
【问题描述】:

我正在使用最新的 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: 2: 3: 4: 让我们做 本语句小写: 5: 6:

堆栈跟踪: 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

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    这条信息告诉我们:

    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”文件复制到了错误的位置?
    • 可能是别的什么?

    您需要自己考虑所有这些可能性。

    【讨论】:

    • 谢谢!实际上我只是重新安装了 jdk 和 eclipse,现在它正在工作
    猜你喜欢
    • 1970-01-01
    • 2017-05-12
    • 2017-12-13
    • 1970-01-01
    • 2017-12-13
    • 2015-11-15
    • 2021-10-04
    • 2016-09-15
    相关资源
    最近更新 更多