enum Fehlermeldung "The public type Day must be defined in its own file"

Xenon

Mitglied
Hallo Forum!

ich habe folgendene Datei angelegt mit "Eclipse Helios". Leider meckert

Java:
Zeile mit Enum: The public type Day must be defined in its own file

Zeile mit import class: 
            Multiple markers at this line
	- The type java.lang.Enum cannot be resolved. It is indirectly 
	 referenced from required .class files
	- The type Enum is not generic; it cannot be parameterized with 
	 arguments <Day>
	- The type java.lang.Enum cannot be resolved. It is indirectly 
	 referenced from required .class files

warum?! wenn ich richtig verstanden habe will eclipse die enum Liste wo anderes haben/in einem exernen file?

hier ist mein quellcode
Java:
import java.util.*;

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
    THURSDAY, FRIDAY, SATURDAY 
}

public class EnumTest {
	Day day;
	
	public EnumTest(Day day) {
		this.day = day;
	}
	
	public void tellItLikeItIs() {
		switch (day) {
			case MONDAY: System.out.println("Mondays are bad.");
					     break;
					
			case FRIDAY: System.out.println("Fridays are better.");
					     break;
					     
			case SATURDAY:
			case SUNDAY: System.out.println("Weekends are best.");
					     break;
					     
			default:	 System.out.println("Midweek days are so-so.");
					     break;
		}
	}
	
	public static void main(String[] args) {
		EnumTest firstDay = new EnumTest(Day.MONDAY);
		firstDay.tellItLikeItIs();
		EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
		thirdDay.tellItLikeItIs();
		EnumTest fifthDay = new EnumTest(Day.FRIDAY);
		fifthDay.tellItLikeItIs();
		EnumTest sixthDay = new EnumTest(Day.SATURDAY);
		sixthDay.tellItLikeItIs();
		EnumTest seventhDay = new EnumTest(Day.SUNDAY);
		seventhDay.tellItLikeItIs();
		
		
	}
}
 
Java:
public class EnumTest {

	public enum Day {
	    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
	    THURSDAY, FRIDAY, SATURDAY 
	}

	Day day;
    
    public EnumTest(Day day) {
        this.day = day;
    }
    
    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY: System.out.println("Mondays are bad.");
                         break;
                    
            case FRIDAY: System.out.println("Fridays are better.");
                         break;
                         
            case SATURDAY:
            case SUNDAY: System.out.println("Weekends are best.");
                         break;
                         
            default:     System.out.println("Midweek days are so-so.");
                         break;
        }
    }
    
    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}
 
Danke für den Tipp
alternativ könnte Day innerhalb der Klasse EnumTest definiert werden

die eine Fehlermeldung wird jetzt nicht mehr angezeigt was aber noch bleibt die Meldung
Java:
Multiple markers at this line
	- The type Enum is not generic; it cannot be parameterized with 
	 arguments <EnumTest.Day>
	- The type java.lang.Enum cannot be resolved. It is indirectly 
	 referenced from required .class files
	- The type java.lang.Enum cannot be resolved. It is indirectly 
	 referenced from required .class files
 
... oder die andere Variante:

In einer eigenen Datei Namens Day.java
Java:
public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY 
}

und in EnumTest die Deklaration der Klasse Day löschen.

Fehlermeldungen oder Warnungen gibt es bei mir keine. (In beiden Fällen nicht)
 
die Fehlermeldung klingt für mich nach Java-Version < 1.5

was liefert [c]java -version[/c] in der Konsole?

bzw. unter Eclipse kann es auch nur eine falsche Einstellung sein
slaterb-albums-temp-picture176-screen1.png

wobei ich dann andere Fehlermeldungen erhalte,
auch die verwendete Java-Version bzw. JRE ist dann wieder interessant:
slaterb-albums-temp-picture177-screen2.png
 
Danke SlaterB für den Hinweis!

Es kommt tatsächlich auf die Java version an bzw. Bibliotheken an.

Man kann diese Fehlermeldung los werden wenn die jre6 zum Beispiel verwendet wird.
Problem: falsche Bibliothek wird verwendet!
Lösung für eclipse:

Project-> Properties -> Java build path -> Libraries -> die aktuelle version checken, wenn 1.4 -> Edit -> Alternate (6 wählen, diese muss jedoch installiert sein)
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben