错误:类X是public应该在名为X.java的文件中声明

时间:2012-12-10 23:22:25

标签: 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) {
        // ...
    }
}

17 个答案:

答案 0 :(得分:37)

您必须将文件从Main.java重命名为WeatherArray.java

或者将该课程从public class WeatherArray {重命名为public class Main {

答案 1 :(得分:8)

文件中公共类的名称必须与该文件的名称相同。

因此,如果您的文件声明了WeatherArray类,则需要将其命名为WeatherArray.java

答案 2 :(得分:5)

当你在硬盘上有1个Java类名,在代码中有另一个Java类名时,会发生这种情况!

例如,我在代码中仅将MainActivity类重命名为MainnActivity(!)。我立即收到了这个错误。

Android Studio的Project选项卡中还有一个可视指示器 - 类中的一个类,就像你有嵌套的类,但有一个错误指示器。

解决方案是简单地在Project选项卡(SHIFT + F6)中重命名类名,以匹配Java代码中的名称。

答案 3 :(得分:1)

您将文件命名为 Main.java 。将您的文件命名为 WeatherArray.java 并编译。

答案 4 :(得分:1)

您的文件名为 Main.java ,应该是

  

WeatherArray.java

答案 5 :(得分:1)

我遇到了同样的问题,但是当我意识到我没有使用正确的大小写对其进行编译时,就解决了。你可能一直在做

  

javac Weatherarray.java

应该在什么时候

  

javac WeatherArray.java

答案 6 :(得分:0)

编译 WeatherArray.java 而不是 Main.java

如果您没有使用与公共类名称相同的名称保存源代码,则会出现此错误。

答案 7 :(得分:0)

如果您将 WeatherArray 类从公开设置为默认。

公共类 WeatherArray ======> 类 WeatherArray

那么你就不会得到任何错误并且 您只需编写代码即可轻松编译

==> javac any_name_you_assign_to_file.java

现在将生成 WeatherArray.class。

要运行你的代码,你必须使用类名

==> java WeatherArray

答案 8 :(得分:0)

从Ubuntu命令行:

//WeatherArray.java
public class WeatherArray {
  public static void main(String[] args) {
    System.out.println("....Hello World");
}}

ls

WeatherArray.java

javac WeatherArray.java

ls

WeatherArray.java WeatherArray.class

java WeatherArray

.... Hello World

当然,如果您用与WeatherArray不同的名称来命名Java文件,则需要将其公开,这将是:

// Sunny.java
class WeatherArray {
   public static void main(String[] args) {
      System.out.println("....Hello World"); }}
// javac Sunny.java; java WeatherArray

答案 9 :(得分:0)

编写“ Javac [x] .java”时,终端不区分大小写,因此请确保在终端中编写的内容与文件名和类名匹配。

我的类名和文件名均为“ MainClass”,但是我正在使用“ Mainclass”进行编译。请注意,我忘了使用“ c”作为大写字母。

答案 10 :(得分:0)

在我的情况下(使用IntelliJ),我复制并粘贴并重命名了工作区,但我仍在使用旧路径来编译新项目。

在这种情况下,也会发生此特定错误,如果您遇到相同的错误,则可以检查是否做过类似的事情。

答案 11 :(得分:0)

我遇到过同样的错误一次。这真的很有趣。我创建了一个.java文件的备份,该文件具有不同的文件名但是具有相同的类名。并继续尝试构建它,直到我检查了我的文件夹中的所有文件。

答案 12 :(得分:0)

要避免此错误,您应该按照以下步骤操作:

1) You should make a new java class

You should make a new java class.

2) Name that class

Name that class

3) And a new java class is made

And a new java class is made

答案 13 :(得分:0)

我是我的情况,我正在使用同步。它创建了一个我不知道的副本,我的编译失败了。

答案 14 :(得分:-1)

错误示例:

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);

  }
}

答案 15 :(得分:-1)

当您将文件命名为 WeatherArray.java 时,也许您在硬盘上有另一个文件,因此您可以将 WeatherArray.java 重命名为 ReWeatherArray.java < / strong>,然后将 ReWeatherArray.java 重命名为 WeatherArray.java 。没关系。

答案 16 :(得分:-1)

答案很简单。它取决于您的管理员权限。在编译java代码之前,您需要以管理员身份运行来打开命令提示符。然后编译你的代码。无需更改代码中的任何内容。类的名称需要与java文件的名称相同..就是这样!!