错误:类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.javaWeatherArray.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 

你应该创建一个新的java类。

 2) Name that class 

命名该类

 3) And a new java class is made 

并创建了一个新的java类

我曾经遇到过同样的错误。 这真的很有趣。 我创建了一个.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 。 一切都会安好的。