Bruder Jakob: .class zu .java - geht net :-(

hi!

ich hab mir folgende kleine application runtergeladen:
http://www.woogley.net/j4k/4ktris/4ktris-1.0.jar
also n kleines java-spiel :o)

ich hab mir dann mit dem programm jode den quellcode dieses spieles aus der .jar geholt (dort war er nur als .class) und wollte den auch prompt in eclipse starten ("Run As Application") und testen (man will ja was lernen) nur leider funzte das Programm dort net..

liegt das jetzt am eclipse oder daran, dass inner .jar-datei noch andere dateien waren, die ich nicht mit dabei hab...? oder an was anderem?????

bitte um hilfe,
viele grüße,
Bruder Jakob ;-)

  1. Hallo Jakob,

    http://www.woogley.net/j4k/4ktris/4ktris-1.0.jar

    in eclipse starten ("Run As Application") und testen (man will ja was lernen) nur leider funzte das Programm dort net..

    ich kenne Eclipse nicht. Aber eine Entwicklungsumgebung nimmt dir nicht das Denken ab. Back to the roots, und da du ja etwas lernen willst solltest du Eclipse erst mal _nicht_ verwenden.

    Du weißt wie man ein Javaprogramm startet?
    java NameDerClassdatei Wie, es geht nicht? Du bekommst einen NoClassDefFoundError. Rufe die Klasse ohne .class auf. Geht immer noch nicht? Ist deine Umgebungsvariable "CLASSPATH" richtig gesetzt? Die muss das aktuelle Verzeichnis enthalten. Also .

    Jetzt passiert schon etwas mehr? Du bekommst eine
    java.lang.NullPointerException at T.paint(Unknown Source)

    Dann ist es jetzt an der Zeit in die java Source zu gucken was in der Methode paint passiert (du willst ja was lernen)

    Viel ist es nicht ....  2 mal ein "createImage()" ein "getGraphics()" aber dann wird es interessant. graphics2d.setColor(C[8]); Das kann schiefgehen wenn C[8] null ist. Also gucken wir was, wo, wie mit C passiert.

    setColor() bekommt ein Objekt Color übergeben. (java.awt.Color) Du kannst im Code also entweder nach C suchen oder nach Color (Wobei mir letzteres vielversprechender erscheint) Das findet sich dann auch. Einmal die Anlage des Objektes private static Color C[]; sowie eine Zuweisung: C = (Color[])objectinputstream.readObject(); Wenn du jetzt weiter nach dem objectinputstream forscht findest du (2 Zeilen drüber) getResourceAsStream("o")); Und was sagt uns das? Es wird eine Ressource "o" als Stream eingelesen. Ist die im jar drin? Na also.

    Genug gelernt für heute. Viel Spaß

    Jochen

    --
    Heute schon gescribbelt?
    Scribbleboard
    1. Hi!
      ok, danke erstmal...
      kannst du mir auch noch sagen, wie ich rausbekomme, was genau in der datei "o" drin steht.. wenn ich die std-mäßig mitem texteditor aufmache kommt ja nix dabei raus...