【问题标题】:Unable to compile class for JSP: cannot be resolved to a type无法为 JSP 编译类:无法解析为类型
【发布时间】:2012-09-12 05:11:49
【问题描述】:

我正在开发一个动态网络项目。项目在本地服务器上运行良好,但不是在现场。在实时服务器上,它会在我使用任何 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

【问题讨论】:

    标签: java jsp jakarta-ee tomcat servlets


    【解决方案1】:

    您好像忘记在 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 上传到生产环境。

    【讨论】:

    • 感谢您的回复。但是我已经导入了类文件。另外我在上面提到它在本地 tomcat 服务器上工作正常,但问题出在实时 tomcat 服务器上。我已经购买了带有 tomcat 和 java 的分片托管。
    • 如果类是导入的,那么问题是您部署了应用程序但错过了该类。确保所有已编译的类都在 WEB-INF/classes 文件夹中(在该文件夹中,您会将包视为文件夹)。
    • 谢谢。类是存在的。此问题适用于使用 java 类所在行的所有 jsp 页面。所有 servlet 工作正常。 jsp文件无法加载任何java类。
    • 我已经更新了我的答案。检查一下,如果我错了,或者你有什么不明白的地方,请告诉我。
    【解决方案2】:

    您似乎在 JSP 之上缺少导入语句

    您需要使用 import 导入用户定义的类

    例子:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-13
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2013-07-17
      • 2012-05-27
      相关资源
      最近更新 更多