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

本文解决了一个常见编程问题,即在创建工程时MainActivity文件名默认设置导致的错误。通过将文件名修改为与public类名一致,使程序恢复正常运行。

图一:

 

图二:

图一中的错误是由于图二中的MainActivity文件名称在新建工程的时候,选择默认。修改成与public类一致的名称后,程序可以正常运行。

 

 

<think>我们正在解决一个Java声明位置的问题。用户提到有一个公共`openWindow`声明在单独的文件`openWindow.java`中,但遇到了错误提示。在Java中,有一个基本规则:如果一个声明为`public`,那么它必须位于与其名相同的文件中。具体来说:-如果有一个公共`OpenWindow`(注意Java名通常采用大驼峰命名法),那么它所在的文件必须命名为`OpenWindow.java`(大小写敏感,取决于操作系统,但在Java中通常要求一致)。-在一个`.java`文件中,可以有多个,但只能有一个`public`,并且该`public`名必须与文件名相同。用户的问题可能是:1.文件名与公共名不一致(例如,名为`openWindow`,但文件名为`OpenWindow.java`或其他)。2.可能在一个文件声明了多个公共。3.名不符合命名规范(通常使用大驼峰命名法,即每个单词首字母大写,如`OpenWindow`)。根据用户提供的信息,名为`openWindow`(首字母小写),而文件名是`openWindow.java`(也是首字母小写)。虽然这在一些操作系统(如Windows)上可能不会引起问题,因为文件系统不区分大小写,但在Linux等区分大小写的系统上,如果名实际是`OpenWindow`(首字母大写)而文件名为`openWindow.java`,则会导致编译错误。然而,Java的规范要求公共名必须与文件名(不包括扩展名)完全一致(包括大小写)。因此,即使是在不区分大小写的系统上,为了代码的可移植性和规范性,也该保持文件名和名完全一致(包括大小写)。**建议的解决方案:**1.名改为大驼峰命名法,即`OpenWindow`,并将文件名改为`OpenWindow.java`。```java//文件名为OpenWindow.javapublicclassOpenWindow{//的内容}```2.如果不想改变名,那么可以将改为非公共(即去掉`public`修饰符),这样文件名就可以任意(但仍需以`.java`结尾)。但通常公共是为了被其他包中的访问,所以如果这个需要被其他访问,则必须使用公共,并且遵循文件名与名一致的规则。**错误示例:**假设我们有如下文件:-文件名:`openWindow.java`-内容:```javapublicclassopenWindow{//注意名首字母小写//...}```在Linux系统上编译可能会报错,因为编译器期望公共`openWindow`所在的文件名为`openWindow.java`,但如果你在代码中引用这个时使用了大写(比如`OpenWindow`),就会导致找不到。**总结:**请确保:-公共名和文件名(不含扩展名)完全相同(包括大小写)。-使用标准的Java命名规范,名使用大驼峰命名法。如果用户的问题不是大小写问题,那么可能是其他原因,比如文件不在正确的目录(包路径)下,或者编译时未指定正确的源文件路径等。但根据用户描述,最可能的是名和文件名的大小写不一致问题。相关问题:1.为什么Java要求公共必须与文件名一致?2.Java中非公共是否可以有多个?它们可以放在什么文件中?3.Java的命名规范有哪些?名、方法名、变量名等该如何命名?4.Java中,如果在一个文件声明多个,会有什么限制?5.如何解决Java编译时出现的“xxx公共的,名为xxx.java文件声明”的错误?</think>### Java公共声明位置问题解析 根据Java规范,公共(public class)必须声明在与其名完全匹配的独立文件中。针对您的问题: **错误原因分析:** 1. **名与文件名不匹配** Java要求公共名必须与文件名(不含扩展名)**严格一致**(包括大小写)。 若定义为: ```java public class openWindow {...} ``` 则文件名必须是`openWindow.java`(首字母小写)。 若使用`OpenWindow.java`(首字母大写)会导致编译错误。 2. **单个文件多个公共** Java禁止在单个文件声明多个公共文件内其他只能使用默认访问修饰符(无public)。 **解决方案:** ```java // 文件: openWindow.java (必须小写开头) public class openWindow { // 实现代码 public static void main(String[] args) { // 示例:使用窗口管理器获取最近窗口(参考引用[1]) Object window = WindowMediator.getMostRecentWindow("browser"); } } ``` **关键规则:** - ✅ 每个公共独占一个文件 - ✅ 文件名 = 公共名 + ".java" - ✅ 名大小写敏感(`openWindow` ≠ `OpenWindow`) - ❌ 禁止文件内出现多个public **典型错误提示:** `错误: openWindow 是公共的, 名为 openWindow.java文件声明` **其他建议:** 若需创建窗口功能(如引用[1]所述),建议: 1. 遵循Java命名规范(名首字母大写更佳) 2. 使用标准窗口API(如`JFrame`) 3. 参考事件委托机制优化交互(引用[4]) --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值