我有以下目录结构:
MessManagement
是父目录。
在那下我有3个目录:
student
,messconvener
,messmanager
学生目录包含Student.java
和Student.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
{
}
答案 0 :(得分:12)
您获得的错误是有道理的。 Student
课程位于MessManagement
包裹而非MessManagement.student
包裹中。
对我来说,由于其他原因我得到了这个错误,这是在一个maven项目中。它在我对类进行了重大更改并复制到许多新类之后开始出现。在您的情况下没有冲突的包名称。
解决方案是mvn clean
。
在此之后,我再也没有得到这个错误。
答案 1 :(得分:1)
发生这种情况的原因有两个
您的目录的根目录是否包含在类路径中?您需要指定何时启动java程序。 See the documentation on how to do that或this variant for unix。
您的课程是否公开?如果您忘记了公共修饰符,则类将具有包可见性,并且无法从其他包中访问。
哦,没有人希望西班牙语的调查......仔细检查你的拼写,包括首都。
答案 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"。