Fout: klasse X is openbaar moet worden gedeclareerd in een bestand met de naam X.java

Ik probeer een programma te schrijven, maar ik krijg deze compilerfout:

Main.java:1: error: class WeatherArray is public, should be declared in a file named WeatherArray.java
public class WeatherArray {
       ^
1 error

Ik heb mijn bestandsnamen gecontroleerd en mijn openbare klasse is hetzelfde als mijn .java-bestand.

Hoe kan ik dit oplossen?

Hier is mijn code:

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

Antwoord 1, autoriteit 100%

Naam van openbare klasse moet overeenkomen met de naam van het .java-bestand waarin het is geplaatst (zoals public class Foo{}moet worden geplaatst in Foo.java-bestand). Dus ofwel:

  • hernoem uw bestandvan Main.javanaar WeatherArray.java
  • hernoem de klassevan public class WeatherArray {naar public class Main {

Antwoord 2, autoriteit 14%

De naam van de openbare klasse in een bestand moet hetzelfde zijn als de naam van dat bestand.

Dus als je bestand de klasse WeatherArray declareert, moet het WeatherArray.java heten


Antwoord 3, autoriteit 6%

Dit gebeurt als je 1 naam hebt voor de Java-klasse op de harde schijf en een andere naam voor de Java-klasse in de code!!

Ik heb bijvoorbeeld mijn MainActivity-klasse hernoemd naar alleen MainnActivity(!) in de code. Ik kreeg deze fout onmiddellijk.

Er is ook een visuele indicator op het tabblad Project van Android Studio – een klasse binnen een klasse, zoals je hebt genest geclassificeerd, maar met een foutindicator.

De oplossing is om eenvoudig de naam van de klasse te wijzigen op het tabblad Project (SHIFT+ F6) zodat deze overeenkomt met de naam in de Java-code.


Antwoord 4, autoriteit 4%

Ik had hetzelfde probleem, maar loste het op toen ik me realiseerde dat ik het niet met de juiste behuizing had gecompileerd. Je hebt misschien gedaan

javac Weatherarray.java

wanneer het had moeten zijn

javac WeatherArray.java


Antwoord 5

Je hebt je bestand de naam Main.javagegeven. geef uw bestand de naam WeatherArray.javaen compileer.


Antwoord 6

je bestand heet Main.javawaar het hoort

WeatherArray.java


Antwoord 7

In mijn geval gebruikte ik syncthing. Het creëerde een duplicaat waarvan ik me niet bewust was en mijn compilatie mislukte.


Antwoord 8

Om deze fout te voorkomen, moet u de volgende stappen volgen:

1) You should make a new java class

2) Name that class

3) And a new java class is made


Antwoord 9

Ik ben een keer dezelfde fout tegengekomen. Het was heel grappig. Ik had een back-up gemaakt van het .java-bestand met een andere bestandsnaam maar met dezelfde klassenaam. En bleef proberen het te bouwen totdat ik alle bestanden in mijn map had gecontroleerd.


Antwoord 10

In mijn geval (met IntelliJ) heb ik de werkruimte gekopieerd en geplakt en hernoemd, en ik gebruik nog steeds het oude pad om het nieuwe project te compileren.

In dit geval zal deze specifieke fout ook optreden. Als je dezelfde fout hebt, kun je controleren of je soortgelijke dingen hebt gedaan.


Antwoord 11

De terminal is niet hoofdlettergevoelig bij het schrijven van “Javac [x].java”, dus zorg ervoor dat wat u in de terminal schrijft, overeenkomt met de bestandsnaam en klassenaam.

Mijn klasnaam en bestandsnaam waren beide “MainClass”, maar ik was aan het compileren met behulp van “Mainclass”. Merk op dat ik vergeten ben de hoofdletter “c” te maken.


Antwoord 12

Vanaf de Ubuntu-opdrachtregel:

//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

….Hallo wereld

Als u uw java-bestand een andere naam geeft dan WeatherArray, moet u deze natuurlijk openbaar verwijderen en dat zou zijn:

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

Antwoord 13

Als u de WeatherArray-klasse van openbaar naar standaard maakt.

openbare klasse WeatherArray=====> klasse WeatherArray

dan krijg je geen foutmelding en
je kunt je code eenvoudig compileren door gewoon te schrijven

==> javac any_name_you_assign_to_file.java

Nu wordt een WeatherArray.class gegenereerd.

Om je code uit te voeren, moet je de klassenaam gebruiken

==> java WeatherArray


Antwoord 14

Compileer WeatherArray.java in plaats van Main.java

Deze fout treedt op als je je broncode niet hebt opgeslagen met dezelfde naam als je openbare klasnaam.


Antwoord 15

Het antwoord is vrij eenvoudig. Het ligt in uw beheerdersrechten. voordat u uw Java-code compileert, moet u de opdrachtprompt openen met uitvoeren als beheerder. compileer vervolgens uw code. het is niet nodig om iets in uw code te veranderen. de naam van de klasse moet hetzelfde zijn als de naam van het java-bestand.. that’s it!!


Antwoord 16

foutvoorbeeld:

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

correct voorbeeld: zorg er alleen voor dat u de juiste naam van de activiteit heeft geschreven die “hoofdactiviteit” is

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

Antwoord 17

wanneer u uw bestand WeatherArray.javanoemde, heeft u misschien een ander bestand op de harde schijf, zodat u WeatherArray.javakunt hernoemen als ReWeatherArray.javaen hernoem dan ReWeatherArray.javaals WeatherArray.java. het komt goed.

Other episodes