【问题标题】:Only a type can be imported. ABC resolves to a package只能导入一个类型。 ABC 解析为一个包
【发布时间】:2013-04-04 11:17:04
【问题描述】:

(我已阅读有关此主题的其他问题,但没有一个有帮助)

好的,我正在尝试将 Java 类导入到我的 JSP 文件中,但是 Tomcat 给了我错误:

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

An error occurred at line: [16] in the generated java file: [I:\path\to\index_jsp.java]
Only a type can be imported. org.runas.XKCDUtils resolves to a package

An error occurred at line: 7 in the jsp file: /index.jsp
XKCDUtils cannot be resolved
4:  String data = null;
5:  int finalComic = 1;
6:  int comicNo = 1;
7:  finalComic = XKCDUtils.getFinalComic();
8: 
9:  if (request.getParameter("page") != null)
10:         comicNo = Integer.parseInt(request.getParameter("page"));

我的JSP文件中的import语句是:

<%@page import="java.io.*, java.net.*, org.runas.XKCDUtils" %>

我的目录结构的相关部分是:

webapps
`-ROOT
 `-index.jsp
 |-WEB-INF
  `-web.xml
  |-classes
   `-org
    `-runas
     `-XKCDUtils.class

我很困惑,因为org.runas.XKCDUtils resolves to a package,但它显然是一个类文件,在我认为是正确的目录中。

请帮忙!

(不要因为我使用 scriptlet 而责备我,我正在尝试清理它们!)

【问题讨论】:

  • 看看this answer。将导入拆分为 3 个单独的导入,并可能在最后一个添加分号。

标签: java jsp


【解决方案1】:

好吧,这很奇怪。 我将导入拆分为三个导入,

<%@page import="java.io.*" %>
<%@page import="java.net.*" %>
<%@page import="org.runas.XKCDUtils" %>

它神奇地决定起作用。然后当我把导入改回来时,

<%@page import="java.io.*, java.net.*, org.runas.XKCDUtils" %>

它神奇地决定继续工作。

也许它与重新启动 Tomcat 有关?好吧,无论如何,它现在可以工作了。

【讨论】:

  • 可能和重启 Tomcat 有关系? - 差不多吧:安装完库后,需要重启 Tomcat 才能加载。显然,您的问题的答案是:重新启动 Tomcat。随意添加新答案并选择它作为接受。
【解决方案2】:

我遇到了同样的问题;通过停止服务器(在我的情况下为 Tomcat)并重建项目来解决。

【讨论】:

  • 重启服务器也解决了我的问题。
【解决方案3】:

我不知道究竟是什么导致了错误,但我改变了

<%@page import="java.io.*, java.net.*, org.runas.XKCDUtils" %>

<%@page import="java.io.*, java.net.*, org.runas.*" %>

它奏效了。我对错误的解释是,由于某种原因,Tomcat 认为 XKCDUtils 是一个包,而不是包中的一个类。使用 * 进行导入可以明确表示它正在导入类。

【讨论】:

    猜你喜欢
    • 2015-10-02
    • 2017-12-20
    • 2016-06-09
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    相关资源
    最近更新 更多