无法访问包中的类

时间:2014-11-11 04:28:57

标签: java package packages

我有以下目录结构:

MessManagement是父目录。

在那下我有3个目录: studentmessconvenermessmanager

学生目录包含Student.javaStudent.class个文件。 messconvener包含MessConvener.java这需要Student class MessConvener 从<{1}}本身扩展

我该如何进行类的包装.... ??

到目前为止我尝试了什么。

代码:

这是Student

Student.java

这是package MessManagement; import java.sql.*; public class Student { }

MessConvener.java

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

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

6 个答案:

答案 0 :(得分:12)

您获得的错误是有道理的。 Student课程位于MessManagement包裹而非MessManagement.student包裹中。

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

解决方案是mvn clean

在此之后,我再也没有得到这个错误。

答案 1 :(得分:1)

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

  1. 您的目录的根目录是否包含在类路径中?您需要指定何时启动java程序。 See the documentation on how to do thatthis variant for unix

  2. 您的课程是否公开?如果您忘记了公共修饰符,则类将具有包可见性,并且无法从其他包中访问。

  3. 哦,没有人希望西班牙语的调查......仔细检查你的拼写,包括首都。

答案 2 :(得分:1)

我最近遇到了这个问题,因为我在与我正在编译的java文件相同的目录中有一个类文件。您需要删除该目录中的所有.class文件。

答案 3 :(得分:0)

我删除了out文件夹,问题已解决

答案 4 :(得分:0)

当将文件从一个项目复制到另一个项目或通过重构移动文件时,会发生这种情况。

在Intellij IDEA / Gradle项目中对我有用的是删除包装行,并使用Shift+Enter将其替换为看似非常相同的行。如果您有很多类,则需要找到依赖项的“根”并首先从那里开始。 非常奇怪的解决方案,因为与这些文件的纯文本进行比较不会显示任何内容,但可以解决问题。 另一个解决方案是在包上使用Refactor-Rename,给它提供一个缓冲区名,然后像希望调用它一样再次命名它。 我没有更深入地了解为什么会发生这种情况。

在maven项目mvn clean中帮助了我。

答案 5 :(得分:0)

对我来说这是在将 java 更新到 jdk_16 之后发生的。

在我更改“.idea”文件夹中的“misc.xml”文件后解决了。 将 languageLevel="JDK_15" 更改为 languageLevel="JDK_16"。