Java Eclipse:为什么手动创建的类不是';我认不出来?

Java Eclipse:为什么手动创建的类不是';我认不出来?,java,eclipse,class,web,package,Java,Eclipse,Class,Web,Package,例如:我正在做一个网络项目。在一个servlet的某一行中,我放置了以下行: ContatoDao dao = new ContatoDao(); 所以Eclipe抱怨说找不到ContatoDao。这是对的;这个班在另一个包里。因此,为了进行测试,我将contatoDao复制到当前类的同一目录中(同时将其包更改为当前类的同一包)。但我一直在犯这样的错误: HTTP Status 500 - Servlet execution threw an exception (...) roo

例如:我正在做一个网络项目。在一个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的创建类,则不会发生。为什么?

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


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

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

如果您有一个顶级包
toppackage
,其中包含一个包
子包
,其中包含一个类
ContatoDao
,那么要导入
ContatoDao
,您必须使用:

import toppackage.subpackage.ContatoDao;

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

“我已将该类复制到同一目录”-这只会导致问题。你不知道导入吗?在这种情况下,我不知道如何导入,因为contatoDao类位于当前包的“兄弟”包中。与从任何其他包导入类的方式完全相同。但是,例如:此项目的根位于包a,这是包B的子类。ContatoDao类的根位于包C,是包B的另一个子类。我是否应该使用类似“import../../(…)/package C/(…)”?导入不是相对的。好的,我在下面的类:“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`文件夹中,你在使用
import com.caelum.jdbc.modelo.ContatoDao;`?好的,我在“C:\Users\Victor\Desktop\projects\fj21 agenda\src”文件夹中。因此,我继续进行项目->属性->构建路径->项目->并添加了“fj21 jdbc”项目。所以现在进口被承认了。但是对于我试图在“fj21议程”中使用的fj21 jdbc类,我得到了一个“NoClassDefFoundError”和“ClassNotFoundException”。思想?无论如何,谢谢您的帮助。@user3708854转到“运行配置”、“类路径”选项卡,并确保fj21议程在列表中。(我认为这应该是自动发生的,但如果没有,那么就添加它)好吧……谢谢!没有一个项目列在那里,现在都列在那里了。现在看来,错误不再发生了!但是…出现了另一个。由于这个机会,您是否知道为什么会出现“没有找到适合jdbc的驱动程序:mysql://localhost/mysql“将出现,因为驱动程序在两个项目的文件夹中都被压缩并添加到它们的生成路径中?”?