Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:类X是公共的,应在名为X.java的文件中声明_Java - Fatal编程技术网

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

错误:类X是公共的,应在名为X.java的文件中声明,java,Java,我正试图编写一个程序,但遇到以下编译器错误: Main.java:1:错误:类WeatherArray是公共的,应该在名为WeatherArray.java的文件中声明 公共类气象阵列{ ^ 1错误 我已经检查了我的文件名,我的公共类与我的.java文件相同 我怎样才能解决这个问题 这是我的密码: public class WeatherArray { public static void main(String[] args) { // ... } } 公共

我正试图编写一个程序,但遇到以下编译器错误:

Main.java:1:错误:类WeatherArray是公共的,应该在名为WeatherArray.java的文件中声明
公共类气象阵列{
^
1错误
我已经检查了我的文件名,我的公共类与我的.java文件相同

我怎样才能解决这个问题

这是我的密码:

public class WeatherArray {
    public static void main(String[] args) {
        // ...
    }
}

公共类的名称必须与放置它的.java文件的名称匹配(例如
公共类Foo{}
必须放置在
Foo.java
文件中)。因此:

  • 将文件从
    Main.java
    重命名为
    WeatherArray.java
  • 将类从
    public class WeatherArray{
    重命名为
    public class Main{

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


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

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

      您的文件将在其应该的位置命名为Main.java

      WeatherArray.java


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

      当您有一个r硬盘上的Java类和代码中Java类的另一个名称

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

      在AndroidStudio的Project选项卡中还有一个可视指示器——一个类中的类,就像嵌套的classed一样,但有一个错误指示器


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

      当您将文件命名为WeatherArray.Java时,可能您的硬盘上还有另一个文件,因此您可以将WeatherArray.Java重命名为ReWeatherArray.Java,然后将ReWeatherArray.Java重命名为WeatherArray.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);
      
        }
      }
      
      正确示例:只需确保您编写了“主要活动”活动的正确名称


      在我的案例中,我正在使用syncthing。它创建了一个我不知道的副本,并且我的编译失败。

      要避免此错误,您应该遵循以下步骤:

      1) You should make a new java class
      


      我曾经遇到过同样的错误。这真的很有趣。我用不同的文件名创建了一个.java文件的备份,但类名相同。然后一直尝试构建它,直到我检查了文件夹中的所有文件。

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


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

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


      我的类名和文件名都是“MainClass”,但我是用“MainClass”编译的。注意,我忘了用大写字母“c”。

      我也遇到了同样的问题,但当我意识到我没有用正确的大小写编译它时,我解决了这个问题。你可能一直在这样做

      javac Weatherarray.java

      应该是什么时候

      javac WeatherArray.java


      从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不同的名称命名java文件,则需要去掉public,它将是:

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

      它说它试图编译
      Main.java
      而不是
      WeatherArray.java
      我在Mac OSX上使用eclipse。将源代码发布到Main.java.1.确保你的文件名尊重类名的大小写;2.清除所有嵌套的
      while
      循环,否则我今晚会杀了很多小猫。我可以用这些循环来吃一点薯条吗sted while loops?Main.java在文件结构中位于何处?如果没有
      public class Main
      就没有
      Main.java
      。不要将Main类与
      Main
      方法混淆。你的
      Main
      方法在
      WeatherArray.java
      中。另外,我认为你的嵌套while应该是顺序的
      If
      语句。好的,谢谢你的帮助。我将大胆地删除所有嵌套的while循环。它还可以通过删除
      public
      使类成为非公共类(但如果你试图从其他包中使用该类,这将导致一些问题)。它实际上是一个注释。如果有另一个文件具有相同的名称,它可能会覆盖该文件或出现其他错误。如果您正在尝试编译新文件,其他答案中给出的建议就是所需的全部-只需重命名该文件或类,如果有另一个文件阻止重命名它,则显然需要将其从wa中删除首先是y。似乎缺乏管理员权限不太可能导致此错误。这似乎没有给2-5年前发布的5个答案添加任何内容,即类名需要与文件名匹配,特别是其中已经提到了类名中的拼写错误。
      3) And a new java class is made
      
      //WeatherArray.java
      public class WeatherArray {
        public static void main(String[] args) {
          System.out.println("....Hello World");
      }}
      
      // Sunny.java
      class WeatherArray {
         public static void main(String[] args) {
            System.out.println("....Hello World"); }}
      // javac Sunny.java; java WeatherArray