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

Java 无法解析为类型(jsp+;eclipse),java,eclipse,jsp,types,Java,Eclipse,Jsp,Types,我有一个jsp项目作为表示层,用于显示来自java类的函数的结果(一个简单字符串)。此类位于src目录中 当我尝试运行时,会出现以下错误: org.apache.jasper.jaspereException:无法为JSP编译类: 然后: 无法将分析器解析为类型 我的jsp代码是: <% String input="ebnf a{non terminal A;}"; Symbol tree=null; parser p=null;

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

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

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

然后:

无法将分析器解析为类型

我的jsp代码是:

<%
        String input="ebnf a{non 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似乎无法识别它们。

您应该在jsp的开头添加一个字母。样本:

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

//等等

一个建议:让你的课程遵循以下步骤。这是一个很好的指南,可以帮助其他人轻松阅读您的代码(当您想要查看/改进代码时,它将帮助您自己)。

只需在上述答案上添加更多内容即可

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

阅读更多

java类将在何处运行

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


因此,如果您在
src
目录下有package
foo.bar
,那么您的类将位于
/WEB-INF/classes/foo/bar/
最后只是这些类没有获得可见性。我没有它们的public属性,因此它们不能作为类型解析,尽管jsp知道它们在哪里

这就是JFlex/CUP的问题:JFlex和CUP创建的类(analex和parser)没有可见性属性


谢谢你的回答。下次我将尝试更具体地回答我的问题。

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

不起作用。我已经完成了导入。我应该这么说。抱歉。请尝试注释代码并编译jsp。如果这样做有效,那么将代码复制到另一个类中,并对其进行测试,以了解其运行情况。在那之后,把你需要的所有导入都放在你的课堂上。另外,根据您所给出的描述,解析器看起来甚至不是一个类,而是一个类的属性。@AegLos:提供完整的错误堆栈跟踪。始终提供足够的详细信息,以便用户能够帮助您。很高兴看到您回答问题的精神,但您应该查看问题发布的日期,因为用户当时可能已经找到了问题的解决方案,或者在所有这些时间过去后对答案不感兴趣。@AhmedAkhtar ok,我忽略了日期。这是我的第一个答案,感谢您的提醒。请随时回答发布的任何问题,无论日期/时间如何,只要与问题相关/您的答案为您解决了类似问题。最终的目标是帮助所有的程序员,而不仅仅是一个,就像你今天的回答帮助了我一样。OP接受的答案不一定能解决所有程序员的问题。