“公共类型<>必须在自己的文件中定义”Eclipse中的错误
我写了以下代码:
package staticshow; public class StaticDemo { static int a = 3; static int b = 4; static { System.out.println("Voila! Static block put into action"); } static void show() { System.out.println("a= " + a); System.out.println("b= " + b); } } public class StaticDemoShow { public static void main() { StaticDemo.show(); } }
我收到错误消息:
The public type StaticDemo must be defined in its own file
第一行public class StaticDemo {
。 为什么会这样,我该如何解决? 请注意,我的项目名称是StaticDemoShow
,包名称是staticshow
,类名称在代码中给出。
编辑 – 在公开一个类或两个类默认后,我收到错误“选择不包含主类型”。 那我该怎么办?
我们在一个文件中不能有两个公共类。 JVM无法理解,在一个文件中我们只能编写一个公共类。
public class StaticDemo { static int a = 3; static int b = 4; static { System.out.println("Voila! Static block put into action"); } static void show() { System.out.println("a= " + a); System.out.println("b= " + b); } } class StaticDemoShow { public static void main() { StaticDemo.show(); } }
不能在同一个文件中有两个公共类
public class StaticDemo{
改成
class StaticDemo{
Java规则:一个文件中的一个public
类。
将此类保存在StaticDemo.java文件中。 你也不能在一个文件中有多个公共类。
您不能使用2个公共类实例,您需要使用一个。 尝试使用类(名称)而不是公共类(名称)
公共类StaticDemo {第一行中的错误
任何具有public
访问修饰符的A
类必须具有单独的源文件A.java
或A.jav
。 这在JLS 7.6部分中指定 :
当且仅当包存储在文件系统(第7.2节)中时,如果在由类型名称组成的名称下的文件中找不到类型,则主机系统可以选择强制执行编译时错误的限制。如果满足以下任一条件,则加上一个扩展名(例如.java或.jav):
该类型由声明类型的包的其他编译单元中的代码引用。
该类型被声明为public (因此可以从其他包中的代码访问)。
但是,您可能必须从类声明StaticDemo
删除public
访问修饰符。 然后,由于StaticDemo
类没有修饰符,它将变为包私有 ,也就是说,它只在自己的包中可见。
检查控制对类成员的访问
你可以在一个文件中只有一个公共类,否则你将得到你现在得到的错误,文件名必须是公共类的名称
我的程序中有两个重大错误。 从其他答案中,我在单个java程序中学到,不能将两个类声明为“public”。 所以我更改了访问说明符,但是在我的问题中添加了另一个错误“EDIT”,“Selection不包含主类型”。 最后我发现我忘记在我的main方法中添加“String args []”部分。 这就是代码无效的原因。 整改后,它按预期工作。