无法访问包中的类

新手上路,请多包涵

我有以下目录结构:

MessManagement 是父目录。

在那个目录下我有 3 个目录: studentmessconvenermessmanager

学生目录包含 Student.javaStudent.class 文件。 The messconvener contains the MessConvener.java this requires the Student class as MessConvener is extended from Student itself.

我应该如何包装课程……?

到目前为止我已经尝试过什么。

代码 :

这是 Student.java

 package MessManagement;
import java.sql.*;

public class Student
{

}

这是 MessConvener.java

 package MessManagement;
import MessManagement.student.Student;
public class MessConvener extends Student
{

}

但这似乎不起作用。错误消息:

MessConvener.java:2: error: package MessManagement.student does not exist import MessManagement.student.Student; ^ MessConvener.java:3: error: cannot find symbol public class MessConvener extends Student ^ symbol: class Student 2 errors

原文由 Rohith R 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 859
2 个回答

发生这种情况有两个可能的原因

  1. 目录的根是否包含在类路径中?您需要在启动 java 程序时指定。 请参阅有关如何执行此操作的文档unix 的此变体

  2. 你的课程是公开的吗?如果您忘记了 public 修饰符,类将具有包可见性并且不能从其他包访问。

  3. 哦,好吧,没有人期望西班牙宗教裁判所……仔细检查你的拼写,包括大写字母。

原文由 Jens Schauder 发布,翻译遵循 CC BY-SA 3.0 许可协议

你得到的错误是有道理的。 Student 类位于 MessManagement 包而不是 MessManagement.student 包。

So either remove your import of Student in MessManagement or change the package name in Student to MessManagement.student .


对我来说,由于不同的原因我得到了这个错误,这是在一个 Maven 项目中。在我对课程进行重大更改并复制了许多新课程后,它开始出现。与您的情况一样,没有冲突的包名称。

解决方案是做 mvn clean

在此之后,我不再收到该错误。

原文由 smac89 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题