wucher wichtel: Unverständliche Fehlermeldung

Hallo!

Ich arbeite mich gerade durch die Javainsel. Dort gibt es folgendes Beispiel: http://www.galileocomputing.de/openbook/javainsel6/javainsel_14_012.htm#Xxx1000818

Ich habe den Quelltext kompiliert doch dabei kam folgende Fehlermeldung:

javac: invalid target release: 1.6
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files
  -cp <path>                 Specify where to find user class files
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -d <directory>             Specify where to place generated class files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -version                   Version information
  -help                      Print a synopsis of standard options
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system

Kann mir bitte jemand sagen, was das bedeutet? Ich habe versucht durch Googeln weiter zukommen, aber ohne Erfolg. Ich habe den Quelltext einfach kopiert und das "package" weggelassen. Was bedeutet dieser Fehler? Ich habe ihn noch nie gesehen und werde aus dem Text auch nicht schlau.

Vielen Dank für eure Hilfe!
ciao, ww

  1. Hallo,

    javac: invalid target release: 1.6

    Du hast vermutlich sowas wie "-target 1.6" als Aufrufparameter für javac
    angegeben. Möglicherweise hast du aber eine ältere Version (z.B. 1.5)
    von Java installiert und kannst daher nicht für das neuere Java kompilieren.

    Wenn dem nicht so sein sollte, wären mehr Infos von dir sinnvoll.

    Gruß
    Slyh

    1. Hallo!

      Danke schön, Slyh! Jetzt geht es. Ich habe Version 1.6 runtergeladen und es funktioniert.
      Könntest du mir vielleicht verraten, wie du aus solchen Fehlermeldungen schlau wirst? Ist das "nur" Erfahrung, oder woher weißt du das?
      Auf jeden Fall vielen Dank für die Hilfe!

      ciao, ww

      1. Hallo,

        Könntest du mir vielleicht verraten, wie du aus solchen Fehlermeldungen schlau wirst? Ist das "nur" Erfahrung, oder woher weißt du das?

        Naja, wenn da steht "javac: invalid target release: 1.6" und ich weiß, daß
        man beim Kompilieren ein Target angeben kann, javac das Target aber in
        diesem Fall nicht kennt, obwohl es eigentlich korrekt angegeben ist, schließe
        ich messerscharf daraus, daß es sich wohl um ein älteres Java handelt, das
        dieses Target eben noch nicht kennt. :)

        (Und natürlich hab ich die Meldung auch schonmal gesehen, als ich bei einem
        Java 1.4 versehentlich als Target 1.5 angegeben habe und eine entsprechende
        Meldung kam. Ist aber schon ein Weilchen her...)

        Gruß
        Slyh

        1. Hallo!

          Ok! Danke schön an euch beide. Ich wusste nichts von einem Target. Daher meine Frage. Danke für die Antworten.

          ciao, ww

      2. Könntest du mir vielleicht verraten, wie du aus solchen Fehlermeldungen schlau wirst? Ist das "nur" Erfahrung, oder woher weißt du das?

        Hi, ich bin zwar nicht Slyh, aber trotzdem:

        javac: invalid target release: 1.6

        Ich vermute, es basiert auf dem Wissen, dass Sun's Versionsnummern ein bisschen komisch sind (Java 6 ist das gleiche wie 1.6, irgendwie), dass Java 6 in der Final gerade mal ein paar Wochen alt ist und die reale Möglichkeit besteht, dass Du noch die vorige Version benutzt.
        Wenn man kompiliert, gibt man halt ein target release an (Ziel-Version), da der Compiler auch Code für alte Java-Versionen erstellen kann. Der Compiler muss also erfahren, welche Version gewünscht ist, und die Version hast du in der Kommandozeile ausdrücklich angegeben. (Ansonsten gilt der Defaultwert der gerade benutzten Version). Und wenn 1.6 ungültig ist, dann ist das entweder zu alt oder zu neu oder ergibt sonstwie keinen Sinn.
        Also, da gehört wahrscheinlich schon ein gewisses Wissen dazu.

        Gruß
        Def