【问题标题】:"Import cannot be resolved" with JSP使用 JSP 时“无法解析导入”
【发布时间】:2012-12-07 01:31:11
【问题描述】:

我正在尝试从 JSP 页面调用 Java 类。我已经使用 JDeveloper 创建了项目。

我收到一条错误消息,提示“无法解决导入”。我已经在WEB-INF的根文件夹中添加了Class文件,并尝试编译,但仍然显示相同的错误。

下面是代码:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
    </head>
    <body>
        <p>  
            <%@ page import="java.util.*"%>
            <%@ page import="Class1"%>
            <% 
                Class1 tc=new Class1("test");
                out.print(tc.str);
            %>
        </p>
    </body>
</html>

【问题讨论】:

标签: java class jsp import jdeveloper


【解决方案1】:

您应该为您的班级提供完全限定的名称。 (包名.类名) 喜欢:

    <%@ page import="pkgname.Class1"%>

【讨论】:

  • 类未打包。需要包装吗?
  • @user1884132 是的,你必须打包你的班级。如果不打包它们,这是一个不好的做法。查看此链接了解更多详情coderanch.com/how-to/java/PackageYourBeans
  • 我有一个类似的错误把我带到这里。我有 导致在 JSP 运行时没有解析 CompanyDAO。我重复了这行并将 * 替换为 CompanyDAO,如下所示:。令我惊讶的是,它解决了这个问题。是的,花时间将所有代码放入包中。我不太关心“CodeRanch”。我通过将我所做的混乱转换为 Eclipse 想要的 Web 应用程序来找出 Eclipse 中的包。
【解决方案2】:

页面指令通常放置在 JSP 的顶部。我还假设Class1 在默认包中,因为它没有完全限定的名称。如果Class1 在包中,则需要在导入中的名称前加上包名。

<%@ page import="java.util.*" %>
<%@ page import="Class1" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
</head>
<body>
    <p>
<%
Class1 tc=new Class1("test");
out.print(tc.str);
  %>
    </p>
</body>

【讨论】:

  • 我认为在正文标签中声明它们并不重要
  • @GanGnaMStYleOverFlowErroR 这更像是一种风格或最佳实践建议。
  • @km 是的,这是一个很好的做法,但不能解决编译器错误,不是吗?
  • @GanGnaMStYleOverFlowErroR 同意。我也对这个类是否被打包感兴趣。我曾经和 Jdeveloper 一起工作,我觉得任何人都在使用那个“工具”。
  • @km 从他的 JSp 中我们可以看出,这可能是唯一可能的情况。
【解决方案3】:

首先,/WEB-INF/src 是保存您的 java 源代码的错误位置(因为 WEB-INF 文件夹内容已部署到您的服务器);您应该希望将它们从/WEB-INF 中移出(例如,移到项目根目录中的 /src 中)

无论哪种方式,您都需要告诉 Eclipse 您的源代码在哪里以及您希望在哪里构建类。它在项目属性对话框中完成:

  1. 在 Eclipse 中右键单击您的项目,选择属性

  2. 点击左侧的Java Build路径

  3. 点击右侧的源标签

  4. 单击添加文件夹按钮并添加您的源文件夹(/WEB-INF/src 或您移动到的任何位置)

  5. 确保在下方选中允许源文件夹的输出文件夹

  6. 在新添加的源路径下选择输出文件夹并将其指向 /WEB-INF/classes 或您选择的其他位置

【讨论】:

    【解决方案4】:

    你不应该重复像&lt;%@ page import ......%&gt;这样的指令标签。但是您可以重复导入属性值本身中的值,例如 &lt;%@ page import="java.util.*, java.io.*"%&gt; 并确保将完全限定名称导入

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2012-08-14
      • 2013-04-06
      相关资源
      最近更新 更多