错误: 类Something是公共的, 应在名为 Something.java 的文件中声明

Java编译报错:

  错误: 类Something是公共的, 应在名为 Something.java 的文件中声明

如下图所示:

第一种解释:
“类A是公共的,应在名为 A.java 的文件中声明”这句话需要分两步来理解

  1、在Java中,如果类A被声明为公共的(public),那么必须将类A保存在名为 A.java的文件中;
  2、反之,在一个Xxx.java的文件中最多包含一个顶级的公共类,并且该公共类的名字要与文件名相同。比如文件A.java中,允许定义一个或多个类,但最多允许一个顶级的公共类,此类名为A。
  注意:此处强调的顶级的意思是:允许非顶级的公共类存在,如内部公共类(即内部类中的公共类)等。

第二种解释:
  这是你的命名错误,把文件名改为 A.java ,因为该文件里面的类是public class A {} ,
  要不可以把你这个公共的(public)去掉,那么文件名就可以任意起了。否则文件名就要和类名保持一致。

第三种解释:
  一个文件中最多只能有一个类是public的,这样可以暴露类的定义,方便其他类来访问! 如果已经有了这个公共的类 ,那么这个文件名必须和类名相同!  

  还要注意:如果只建了一个 .java文件,public只能声明在public static void main(String[] args) {} 前,否则即使定义的public的类名与你声明的java文件的名字一致,也会编译报错。

原文地址:https://www.cnblogs.com/chenmingjun/p/8456646.html

时间: 2024-10-12 18:53:11

错误: 类Something是公共的, 应在名为 Something.java 的文件中声明的相关文章

helloworld.java:1: 错误: 类HelloWorld是公共的, 应在名为 HelloWorld.java 的文件中声明 public class HelloWorld

在搭建与配置JDK环境之后,准备测试一下是否成功. 于是用记事本复制粘贴了一段代码 public class HelloWorld { /** * 输出一行字符串"Hello World!" * @param args */ public static void main(String[] args) { System.out.println("Hello World!"); } } 保存为helloworld.java文件. 接着在cmd命令行中,使用javac编

Java入门-类HelloWorld是公共的,应在名为HelloWorld.java的文件中声明

开始学习java了,搭好环境,notepad++中新建一个java文件,新建一个HelloWorld类, public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 保存文件时取名firstjava.java,然后进入命令行开始编译,然而编译时却出现一个错误,“类HelloWorld是公共的,应在名为HelloWorld.java的文

错误:类Byte是公共的,应在名为Byte.java 的文件中声明public class Byte{}一个错误

解决:文件名是xyz,那你的这个类名也应该是xyz.

关于类xxx.java是公共的,应在xxx.java文件中声明。

一旦用public来修饰一个类名,那么那个类所存在的文件的名字就必须和那个类的名字相同.所以不能打错类名啊!!!

(文件名.JAVA)的文件名只能与该文件中的public类的名称一致

1.如果类Yuangong 被声明为公共的(public),那么必须将类Yuangong 保存在名为Yuangong.java的文件中:2.反之,在一个文件中最多包含一个顶级的公共类,并且该公共类的名字与文件名相同.比如文件Yuangong .java中,允许定义一个或多个类,但最多允许一个顶级的公共类,此类名为Yuangong .此处强调的顶级的意思是,允许非顶级的公共类存在,如内部公共类等.说的简单点,一个文件中最多只能有一个类是public的,这样可以暴露类的定义,方便其他类来访问!如果已

在类的头文件中尽量少引入其他头文件 <<Effective Objective-C>>

与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用Objective-C 语言编写"类"(class)的标准方式为:以类名做文件名,分别创建两个文件,头文件后缀用.h,实现文件后缀用.m.创建好一个类之后,其代码看上去如下所示: // EOCPerson.h #import <Foundation/Foundation.h>

iOS 在类实现定义中声明成员变量的怪异方式

WebGL 规范(WebGL Specification) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的漂亮人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 看看下面的使用方法,几年前系统地看过 Objective-C 2.0 的官方文档和那本

模板类成员函数的定义和声明为什么要放在一个文件中

"通常情况下,你会在.h文件中声明函数和类,而将它们的定义放置在一个单独的.cpp文件中.但是在使用模板时,这种习惯性做法将变得不再有用,因为当实例化一个模板时,编译器必须看到模板确切的定义,而不仅仅是它的声明.因此,最好的办法就是将模板的声明和定义都放置在同一个.h文件中.这就是为什么所有的STL头文件都包含模板定义的原因."[1] "标准要求编译器在实例化模板时必须在上下文中可以查看到其定义实体:而反过来,在看到实例化模板之前,编译器对模板的定义体是不处理的--原因很简单

错误的类文件:… 类文件具有错误的版本 52.0,应为 50.0

出现问题: 今天在pom.xml中引入了最新版本guava工具包,编译时报了如下错误: [ERROR] E:\workspace\report\src\main\java\indi\johnny\report\template\excel\ExcelXSSFStyle.java:[16,-1] 无法访问 com.google.common.base.Strings错误的类文件: com\google\common\base\Strings.class(com\google\common\base