Java 无法解析为类型(jsp+;eclipse)
我有一个jsp项目作为表示层,用于显示来自java类的函数的结果(一个简单字符串)。此类位于src目录中 当我尝试运行时,会出现以下错误: org.apache.jasper.jaspereException:无法为JSP编译类: 然后: 无法将分析器解析为类型 我的jsp代码是: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;
<%
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
目录下有packagefoo.bar
,那么您的类将位于/WEB-INF/classes/foo/bar/
最后只是这些类没有获得可见性。我没有它们的public属性,因此它们不能作为类型解析,尽管jsp知道它们在哪里
这就是JFlex/CUP的问题:JFlex和CUP创建的类(analex和parser)没有可见性属性
谢谢你的回答。下次我将尝试更具体地回答我的问题。清理项目,并按如下方式重新加载JRE:
Java构建路径->库->添加库->JRE系统库不起作用。我已经完成了导入。我应该这么说。抱歉。请尝试注释代码并编译jsp。如果这样做有效,那么将代码复制到另一个类中,并对其进行测试,以了解其运行情况。在那之后,把你需要的所有导入都放在你的课堂上。另外,根据您所给出的描述,解析器看起来甚至不是一个类,而是一个类的属性。@AegLos:提供完整的错误堆栈跟踪。始终提供足够的详细信息,以便用户能够帮助您。很高兴看到您回答问题的精神,但您应该查看问题发布的日期,因为用户当时可能已经找到了问题的解决方案,或者在所有这些时间过去后对答案不感兴趣。@AhmedAkhtar ok,我忽略了日期。这是我的第一个答案,感谢您的提醒。请随时回答发布的任何问题,无论日期/时间如何,只要与问题相关/您的答案为您解决了类似问题。最终的目标是帮助所有的程序员,而不仅仅是一个,就像你今天的回答帮助了我一样。OP接受的答案不一定能解决所有程序员的问题。