无法为JSP编译类:无法解析为类型

时间:2012-09-19 20:30:56

标签: java jsp java-ee tomcat servlets

我正在开发一个动态网络项目。项目在本地服务器上运行良好,但不在现场运行。在实时服务器上,它会在我使用任何java对象的行中抛出异常:

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

    An error occurred at line: 7 in the jsp file: /groups.jsp
CollectionAppService cannot be resolved to a type
4: <%
5:  String json = "[]";
6:  try {
7:      CollectionAppService collectionAppService = new CollectionAppService();
8:      json = collectionAppService.getGroupsJson();
9:  } catch (Exception e) {
10:         e.printStackTrace();

项目在本地服务器上运行,但在最大类文件的错误日志中也有错误:

错误:

Thu Sep 20 01:16:11 GMT+05:30 2012
File not found: /Users/sukhpal/Data/Workspaces/J2EE Workspace/CollectionApp/build/classes/com/mut/service/common/Constants.class.

请帮助。(在我的实时服务器上启用了Tomcat)。

以下是实时服务器的链接 http://mutmanager.com/webservice/groups.jsp

2 个答案:

答案 0 :(得分:5)

您似乎忘记在JSP中导入CollectionAppService

<%@ page import="your.package.CollectionAppService" %>

但是,存在一个主要问题,您不应该将Java代码放入JSP中。相反,您应该将代码移动到类中,并从Servlet或类似代码中调用它。

主要文章:

不要忘记学习是好的,但也要以正确的方式学习。


再次阅读你的问题后,我看到了这个Stacktrace行:

  

找不到文件:/ Users / sukhpal / Data / Workspaces / J2EE Workspace / CollectionApp / build / classes / com / mut / service / common / Constants.class

我想你的问题是Constant类(以及你的CollectionApp)在项目B中。你正在使用来自另一个包含这些类的项目的绝对路径引用,也许你是'不要上传它。

想象一下这种情况:您有一个Web项目(项目A),并且您有一些类已经在另一个项目(项目B)中执行繁重且奇特的工作,您可以在您工作的大多数项目中重复使用。在您的开发环境中,您有从项目A到项目B的引用,但之后您只将项目A上载到生产环境。这样,当项目A想要从项目B调用一个类时,它将永远不会找到它,并抛出异常。

最佳解决方案:

  • 从项目B创建一个jar。
  • 在项目A中,删除对项目B的所有引用。
  • 将jar添加到项目A中并将其设置在Build Path中。
  • 将项目A上传到生产。

答案 1 :(得分:0)

您似乎缺少JSP上的import语句

您需要使用导入

导入用户定义的类

示例:

<%@ page import="yourpackage.CollectionAppService" %>