错误:类X是public应该在名为X.java的文件中声明
我正在尝试编写程序,但我收到此编译器错误:
Main.java:1: error: class WeatherArray is public, should be declared in a file named WeatherArray.java public class WeatherArray { ^ 1 error
我检查了我的文件名,我的公共类与我的.java文件相同。
我怎样才能解决这个问题?
这是我的代码:
public class WeatherArray { public static void main(String[] args) { // ... } }
您必须将文件重命名为Main.java
到WeatherArray.java
或者将类重命名为public class Main {
文件中公共类的名称必须与该文件的名称相同。
因此,如果您的文件声明了WeatherArray类,则需要将其命名为WeatherArray.java
当您在硬盘上有1个Java类名称而在代码中有另一个Java类名称时会发生这种情况!
例如,我在代码中仅将MainActivity
类重命名为MainnActivity
(!)。 我立刻得到了这个错误。
Android Studio的Project选项卡中还有一个可视指示器 – 类中的一个类,就像你有嵌套的类,但有一个错误指示器。
解决方案是简单地在“项目”选项卡( SHIFT
+ F6
)中重命名类名,以匹配Java代码中的名称。
您将文件命名为Main.java 。 将您的文件命名为WeatherArray.java并进行编译。
您的文件名称为Main.java
WeatherArray.java
我的情况,我正在使用syncthing。 它创建了一个我不知道的副本,我的编译失败了。
要避免此错误,您应该按照以下步骤操作:
1) You should make a new java class
2) Name that class
3) And a new java class is made
我曾经遇到过同样的错误。 这真的很有趣。 我创建了一个.java文件的备份,该文件具有不同的文件名但具有相同的类名。 并继续尝试构建它,直到我检查了我的文件夹中的所有文件。
在我的情况下(使用IntelliJ)我复制并粘贴并重命名了工作区,我仍然使用旧路径来编译新项目。
在这种情况下,这种特殊错误也会发生,如果你有相同的错误,你可以检查你是否做过类似的事情。
答案很简单。 它取决于您的管理员权限。 在编译java代码之前,您需要以管理员身份运行来打开命令提示符。 然后编译你的代码。 无需更改代码中的任何内容。 类的名称需要与java文件的名称相同..就是这样!!
错误示例:
public class MaainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the view from activity_main.xml setContentView(R.layout.activity_main); } }
正确的例子:只要确保你写的是“主要活动”的正确活动名称
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the view from activity_main.xml setContentView(R.layout.activity_main); } }
当您将文件命名为WeatherArray.java时 ,也许您在硬盘上有另一个文件,因此您可以将WeatherArray.java重命名为ReWeatherArray.java ,然后将ReWeatherArray.java重命名为WeatherArray.java 。 一切都会安好的。