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.java
naarWeatherArray.java
- hernoem de klassevan
public class WeatherArray {
naarpublic 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.