“公共类 XXX 应该在文件中出现”错误怎么查找解决

简介: 要解决“公共类XXX应该在文件中出现”的错误,首先定位报错的类名及文件,确认类声明是否为公共(public)。若问题未解,需检查文件命名与类名是否一致,及文件路径是否正确。确保这些要素正确无误可解决此问题。

在 Java 中遇到“公共类 XXX 应该在文件中出现”错误时,可以按照以下步骤进行查找和解决:

一、理解错误信息

这个错误表明 Java 编译器期望在源文件中找到一个与文件名匹配的公共类。例如,如果文件名是“Example.java”,那么源文件中应该有一个名为“Example”的公共类。

二、检查可能的原因

  1. 类名与文件名不匹配

    • 确保源文件中的公共类名与文件名完全一致(不包括文件扩展名)。
    • 例如,如果文件名是“TestFile.java”,那么源文件中必须有一个公共类名为“TestFile”。
  2. 多个公共类在一个文件中

    • Java 源文件中只能有一个公共类。如果源文件中有多个公共类定义,就会出现这个错误。
    • 将不同的公共类分别放在不同的源文件中,每个源文件以相应的公共类名命名。
  3. 缺少公共类

    • 如果源文件中没有定义公共类,而文件名暗示应该有一个公共类,也会出现这个错误。
    • 根据文件名的要求,在源文件中添加一个公共类定义。

三、解决方法

  1. 修改类名或文件名

    • 如果类名与文件名不匹配,修改其中之一使其一致。可以重命名类或文件名,确保它们相互对应。
    • 例如,如果文件名是“MainProgram.java”,但源文件中的公共类名为“MainApp”,将公共类名修改为“MainProgram”或者将文件名修改为“MainApp.java”。
  2. 分离公共类

    • 如果源文件中有多个公共类,将它们分别移动到不同的源文件中。每个源文件应该只包含一个公共类,并且文件名与公共类名一致。
    • 例如,如果源文件中有公共类“ClassA”和“ClassB”,将它们分别移动到“ClassA.java”和“ClassB.java”文件中。
  3. 添加公共类定义

    • 如果源文件中缺少公共类,根据文件名的要求添加一个公共类定义。确保公共类的访问修饰符为“public”。
    • 例如,如果文件名是“UtilityFunctions.java”,但源文件中没有公共类,添加一个名为“UtilityFunctions”的公共类定义,如下所示:
public class UtilityFunctions {
   
    // 类的内容
}

四、总结

“公共类 XXX 应该在文件中出现”错误通常是由于类名与文件名不匹配、多个公共类在一个文件中或缺少公共类引起的。通过检查类名和文件名、分离公共类或添加公共类定义,可以解决这个问题。在编写 Java 代码时,遵循良好的命名规范和文件结构,可以避免出现此类错误。

相关文章
|
11月前
|
缓存 C#
C# 操作路径(Path)类方法的使用与解析运行实例
C# 操作路径(Path)类方法的使用与解析运行实例
|
Java API Android开发
【错误记录】Android 注解处理器报错 ( 非法的类文件开始 , 请删除该文件或确保该文件位于正确的类路径子目录中。 )
【错误记录】Android 注解处理器报错 ( 非法的类文件开始 , 请删除该文件或确保该文件位于正确的类路径子目录中。 )
700 0
【错误记录】Android 注解处理器报错 ( 非法的类文件开始 , 请删除该文件或确保该文件位于正确的类路径子目录中。 )
|
4月前
|
Java
Error:java: 错误: 无效的源发行版:13, 类文件具有错误的版本 61.0, 应为 55.0 请删除该文件或确保该文件位于正确的类路径子目录中。
Error:java: 错误: 无效的源发行版:13, 类文件具有错误的版本 61.0, 应为 55.0 请删除该文件或确保该文件位于正确的类路径子目录中。
|
6月前
模板查找路径配置
模板查找路径配置。
35 1
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
php案例:加限定条件(只找某个路径下自己所需要的文件类型的信息)
ts解决依赖引入报错:无法找到模块“xxxxxx”的声明文件的报错问题
ts解决依赖引入报错:无法找到模块“xxxxxx”的声明文件的报错问题
1876 0
|
Java Spring 容器
找不到类型“ITOO.ExamEvalTemplate.WCFService.ServiceBusines”
找不到类型“ITOO.ExamEvalTemplate.WCFService.ServiceBusines”
93 0
找不到类型“ITOO.ExamEvalTemplate.WCFService.ServiceBusines”
c#程序片段,替换所有同名文件
class Program { static void Main(string[] args) { try { ...
875 0