无法解析为类型(jsp + eclipse)

Posted

技术标签:

【中文标题】无法解析为类型(jsp + eclipse)【英文标题】:cannot be resolved to a type (jsp + eclipse) 【发布时间】:2012-05-27 14:08:46 【问题描述】:

我有一个 jsp 项目作为表示层,用于显示来自 java 类的函数的结果(简单字符串)。这个类在src目录下。

当我尝试运行时出现以下错误:

org.apache.jasper.JasperException:无法为 JSP 编译类:

然后:

解析器无法解析为类型

我的jsp代码是:

<%
        String input="ebnf anon terminal A;";
        Symbol tree=null;
        parser p=null;
        InputStream entrada=null;
        analex analizador;
        try
            entrada=new ByteArrayInputStream(input.getBytes("UTF-8"));
            analizador=new analex(entrada);
            p=new parser(analizador);
            tree=p.parse();
        catch(Exception e)
            out.println("ERROR");
        
        finally
        out.println("CORRECTO");
        ConDiaCClass cdc=Singleton.getInstance();
        out.println(cdc);
%>

实际上,我在使用 ConDiaCClass 和 analex 类时也遇到了同样的问题。

我没有用 Eclipse 创建这些类。它们来自另一个项目,但它们都放在 src 目录中(应该是 java 类所在的目录)。 jsp似乎无法识别它们。

【问题讨论】:

【参考方案1】:

清理项目,并重新加载 JRE,如下所示: Java 构建路径 -> 库 -> 添加库 -> JRE 系统库

【讨论】:

很高兴看到您回答问题的精神,但您实际上应该查看问题发布的日期,因为用户当时可能已经找到问题的解决方案或者不会对此感兴趣这段时间过去后的答案。 @AhmedAkhtar 好的,我忽略了日期。这是我的第一个答案,感谢您的提醒。 无论日期/时间如何,只要与问题相关/您的回答已经为您解决了类似问题,请随时回答发布的任何问题。最终目标是帮助所有程序员,而不仅仅是一个,就像你今天的回答帮助了我一样。 OP接受的答案不一定能解决所有程序员的问题。【参考方案2】:

最后只是类没有可见性属性。我没有它们的公共属性,因此尽管 jsp 知道它们在哪里,但它们无法被解析为类型。

这是一个 JFlex/CUP 问题:JFlex 和 CUP 创建没有可见性属性的类(分析器和解析器)。

感谢您的回答。下次我会尝试更具体地回答我的问题。

【讨论】:

【参考方案3】:

只是在上面的答案中添加更多内容。

JasperException 是 JSP 引擎抛出的所有异常的超类。当您第一次运行 JSP 时,Tomcat 引擎会编译您的 JSP,并且可能会抛出您遇到的编译时错误。

阅读更多JasperException

java 类应该在哪里

您的课程应该在/WEB-INF/classes 目录下。默认情况下,/WEB-INF/classes/WEB-INF/lib(第三方 API)目录位于 CLASSPATH

所以,如果您在src 目录下有包foo.bar,那么您的课程将转到/WEB-INF/classes/foo/bar/

【讨论】:

@AegLos:提供完整的错误堆栈跟踪。始终提供足够的详细信息,以便用户可以帮助您。【参考方案4】:

你应该在 jsp 的开头add the necessary import statements。一个样本:

<%@ page import="java.util.List" %>
<%@ page import="yourpackage.parser, yourpackage.analex" %> //and on

建议:让您的课程遵循Java Code Conventions proposed by Oracle。这是一个很好的指南,可以帮助其他人轻松阅读您的代码(当您想要查看/改进代码时,它会帮助您自己)。

【讨论】:

不起作用。我已经完成了我的进口。我应该这么说的。对不起。 尝试注释代码并编译你的jsp。如果可行,则将您的代码复制到另一个类中并对其进行测试以知道它可以运行。之后,让你需要的所有导入都在你的类中。此外,根据您给出的描述,parser 看起来甚至不是一个类,而是一个类的属性。

以上是关于无法解析为类型(jsp + eclipse)的主要内容,如果未能解决你的问题,请参考以下文章

HttpServlet 无法解析为类型....这是 Eclipse 中的错误吗? [复制]

Eclipse 中为包含的 JSP 指示“无法解析 someVariable”错误

Mono类型解析

javax.servlet.jsp.PageContext 无法解析为类型[重复]

Eclipse 和 Gradle 类路径不同步:无法解析为类型

“DiscordApi 无法解析为类型” Discord Java Eclipse Bot