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

时间:2012-05-21 03:03:44

标签: java eclipse jsp types

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

当我尝试跑步时,我得到了这个错误:

  

org.apache.jasper.JasperException:无法为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无法识别它们。

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:2)

最后,只是类没有获得可见性属性。我没有他们的公共属性所以他们不能被解析为一个类型虽然jsp知道他们在哪里。

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

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

答案 2 :(得分:1)

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

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

了解更多JasperException

  

将java类置于

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

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