57

プログラムを作成しようとしていますが、次のコンパイラエラーが発生します。

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) {
        // ...
    }
}
4

18 に答える 18

87

パブリッククラスの名前は、それが配置されている.javaファイルの名前と一致する必要があります(ファイルpublic class Foo{}に配置する必要があるようにFoo.java)。だからどちらか:

  • ファイルの名前をからMain.javaに変更しますWeatherArray.java
  • クラスの名前をからpublic class WeatherArray {に変更しますpublic class Main {
于 2012-12-10T23:25:16.870 に答える
12

ファイル内のパブリッククラスの名前は、そのファイルの名前と同じである必要があります。

したがって、ファイルでクラスWeatherArrayが宣言されている場合は、WeatherArray.javaという名前にする必要があります。

于 2012-12-10T23:25:39.067 に答える
5

これは、ハードディスクにJavaクラスの名前が1つあり、コードにJavaクラスの名前がもう1つある場合に発生します。

たとえば、コード内でMainActivityクラスの名前を(!)のみに変更しました。MainnActivityすぐにこのエラーが発生しました。

Android Studioの[プロジェクト]タブにも視覚的なインジケーターがあります。ネストされたクラスのように、クラス内のクラスですが、エラーインジケーターが付いています。

SHIFT解決策は、[プロジェクト]タブ( + )でクラス名の名前を変更F6して、Javaコードの名前と一致させることです。

于 2015-07-15T13:05:25.757 に答える
5

私は同じ問題を抱えていましたが、正しいケーシングでコンパイルしていないことに気付いたときに解決しました。あなたはやっていたかもしれません

javac Weatherarray.java

あるべきだったとき

javac WeatherArray.java

于 2019-08-27T20:57:59.340 に答える
1

ファイルにMain.javaという名前を付けました。ファイルにWeatherArray.javaという名前を付けて、コンパイルします。

于 2012-12-10T23:26:02.633 に答える
1

ファイルの名前はMain.javaで、本来あるべき場所にあります

WeatherArray.java

于 2012-12-10T23:27:11.353 に答える
0

私の場合、syncthingを使用していました。それは私が気づかなかった複製を作成し、私のコンパイルは失敗していました。

于 2018-01-30T22:04:51.520 に答える
0

このエラーを回避するには、次の手順に従う必要があります。

1) You should make a new java class

新しいJavaクラスを作成する必要があります。

2) Name that class

そのクラスに名前を付ける

3) And a new java class is made

そして、新しいJavaクラスが作成されます

于 2018-03-12T15:45:30.963 に答える
0

同じエラーが一度発生しました。本当に面白かったです。ファイル名は異なるがクラス名は同じである.javaファイルのバックアップを作成しました。そして、フォルダ内のすべてのファイルをチェックするまで、ビルドを試み続けました。

于 2018-05-03T16:18:54.423 に答える
0

私の場合(IntelliJを使用)、ワークスペースをコピーして貼り付け、名前を変更しましたが、新しいプロジェクトをコンパイルするために古いパスを使用しています。

この場合、この特定のエラーも発生します。同じエラーが発生した場合は、同様のことを行ったかどうかを確認できます。

于 2018-07-16T04:42:07.317 に答える
0

「Javac[x].java」を書き込む場合、端末では大文字と小文字が区別されないため、端末に書き込む内容がファイル名とクラス名と一致していることを確認してください。

クラス名とファイル名はどちらも「MainClass」でしたが、「Mainclass」を使用してコンパイルしていました。「c」を大文字にするのを忘れたことに注意してください。

于 2019-01-25T15:21:54.877 に答える
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

....こんにちは世界

もちろん、JavaファイルにWeatherArrayとは異なる名前を付ける場合は、publicを削除する必要があり、次のようになります。

// Sunny.java
class WeatherArray {
   public static void main(String[] args) {
      System.out.println("....Hello World"); }}
// javac Sunny.java; java WeatherArray
于 2020-01-09T16:37:06.333 に答える
0

WeatherArrayクラスをパブリックからデフォルトにした場合。

パブリッククラスWeatherArray===== >クラスWeatherArray

そうすればエラーは発生せず、書くだけで簡単にコードをコンパイルできます

==> javac any_name_you_assign_to_file.java

これで、WeatherArray.classが生成されます。

コードを実行するには、クラス名を使用する必要があります

==> java WeatherArray

于 2021-06-30T19:47:12.020 に答える
0

Main.javaの代わりにWeatherArray.javaをコンパイルします

このエラーは、パブリッククラス名と同じ名前でソースコードを保存していない場合に発生します。

于 2021-07-13T13:01:10.613 に答える
0

クラス名がファイル名と同じである場合は、幅がゼロの文字が含まれていないことを確認してください

空白が表示されていないクラス名を誤ってコピーしたため、この例外が発生しました

Eclipseはファイルをビルドできましたが、Gradleはビルドできませんでした

これは非常に混乱する可能性があります

于 2021-09-11T20:50:42.353 に答える
-1

答えは非常に簡単です。それはあなたの管理者権限にあります。Javaコードをコンパイルする前に、管理者として実行してコマンドプロンプトを開く必要があります。次に、コードをコンパイルします。コード内で何も変更する必要はありません。クラスの名前は、Javaファイルの名前と同じである必要があります。それだけです。

于 2015-06-23T20:28:23.360 に答える
-1

ファイルにWeatherArray.javaという名前を付けた場合、ハードディスク上に別のファイルがある可能性があるため、WeatherArray.javaの名前をReWeatherArray.javaに変更してから、ReWeatherArray.javaの名前をWeatherArray.javaに変更できます。大丈夫でしょう。

于 2016-07-27T09:46:31.593 に答える
-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);

  }
}
于 2017-04-12T09:06:24.660 に答える