【问题标题】:Eclipse: Why classes created manually aren't recognized?Eclipse:为什么无法识别手动创建的类?
【发布时间】:2015-04-09 21:52:12
【问题描述】:

例如:我正在制作一个 Web 项目。在一个 servlet 的某一行,我放了以下行:

ContatoDao dao = new ContatoDao();

所以 Eclipe 抱怨找不到 ContatoDao。这是正确的;这个类在另一个包中。所以,为了测试,我把contatoDao复制到了当前类的同一个目录下(也把它的包改成了当前类的同一个包)。但我不断收到此错误:

HTTP Status 500 - Servlet execution threw an exception


  (...)


root cause
java.lang.Error: Unresolved compilation problems: 
    ContatoDao cannot be resolved to a type
    ContatoDao cannot be resolved to a type

如果我在同一个地方创建相同的类,但使用 Eclipe 的 create class,则不会发生。为什么?

【问题讨论】:

  • “我将类复制到同一个目录” - 这只会导致问题。你不知道import吗?
  • 在这种情况下我不知道如何导入,因为 contatoDao 类位于当前类的“兄弟”包中。
  • 与从任何其他包中导入类的方式完全相同。
  • 但是,例如:这个项目的根在包A,即包B的儿子。ContatoDao类的根在包C,包B的另一个儿子。我应该使用类似“import ../../(...)/package C/(..)” ??
  • 进口不是相对的。

标签: java eclipse class web package


【解决方案1】:

在 Eclipse 项目资源管理器中,右键单击项目并单击“属性”。然后单击“Java 构建路径”以检查“源”选项卡以查看“构建路径上的源文件夹”。确保列出了您的源代码所在的文件夹。

此外,还要检查“订购和导出”选项卡,并确保此处列出并选择了位于包层次结构根目录的文件夹。

【讨论】:

    【解决方案2】:

    导入不是,也不能是相对于当前包的。

    如果你有一个顶级包toppackage,包含一个包subpackage,包含一个类ContatoDao,那么要导入ContatoDao,你必须使用:

    import toppackage.subpackage.ContatoDao;
    

    无论您从哪个类导入它(即使是toppackage 或toppackage.othersubpackage 中的类)。

    【讨论】:

    • 好的,我在下面的课程: "C:\Users\Victor\Desktop\projects\fj21-agenda\src\br\com\caelum\servlet" 。我要导入的类如下: "C:\Users\Victor\Desktop\projects\fj21-jdbc\src\com\caelum\jdbc\modelo" 。我没有成功尝试导入它。它总是说导入“无法解决”
    • @user3708854 当你在编译时你在C:\Users\Victor\Desktop\projects\fj21-jdbc\src` folder, and you are using import com.caelum.jdbc.modelo.ContatoDao;`?
    • 好的,我在“C:\Users\Victor\Desktop\projects\fj21-agenda\src”文件夹。所以,我继续项目-> 属性-> 构建路径-> 项目-> 并添加了“fj21-jdbc”项目。所以现在进口得到承认。但是对于我试图在“fj21-agenda”中使用的 fj21-jdbc 类,我得到了一个“NoClassDefFoundError”和“ClassNotFoundException”。想法?无论如何,感谢您的帮助。
    • @user3708854 转到运行配置,类路径选项卡,并确保 fj21-agenda 在列表中。 (我认为这应该是自动发生的,但如果没有,那就添加它)
    • 嗯...谢谢!那里没有列出任何项目,现在两个都列出了。现在看来该错误不再发生了!但是……又出现了一个。由于这个机会,您是否知道为什么会出现消息“找不到适合 jdbc:mysql://localhost/mysql 的驱动程序”,因为驱动程序被复制到两个项目的文件夹中并添加到它们的构建路径中?
    猜你喜欢
    • 2012-10-15
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2013-03-26
    相关资源
    最近更新 更多