1. #1

    Registriert seit
    07.06.2012
    Beiträge
    16
    Thanked 0 Times in 0 Posts

    Idee [HELP] Knuddels Bot Client Programmierung

    Hallo!

    Ich habe folgendes Problem & zwar komme ich bei dem TuT von MiBo zur Knuddels Bot Client Programmierung einfach nicht weiter. Ich habe zwar alles genau versucht so zu verfolgen wie im TuT beschrieben, aber dennoch komme am Ende nicht weiter, ich habe einen Screen gemacht, vielleicht kann mich ja einer von euch aufklären was vielleicht falsch gemacht wurde von mir.[/FONT]

    Spoiler:

    Wir haben nun eine .java Datei, die wir kompilieren können. Sehr schön. Wir können es kaum noch erwarten und geben in der Kommandozeile ein:

    javac KMECStart.java (bei mir wäre es javac DSCStart.java)

    Javac ist der JavaCompiler. Der Parameter ist der Dateiname, der hintendran steht, also unsere soeben angelegte DSCStart.java. Nachdem wir dies eingegeben haben und Enter gedrückt haben, ...

    Wichtig: Sollte hier sowas stehen wie "Der Befehl javac konnte nicht gefunden werden", stimmt höchstwahrscheinlich der Pfad zu eurem JDK in den Umgebungsvariablen nicht! Dann bitte nochmal kontrollieren, ob ihr die Version (\jdk1.6\) in dem Pfad in den Umgebungsvariablen angepasst habt!


    Bei mir passiert folgendes, wenn ich javac DSCStart.java eingebe:

    Bild nicht mehr verfügbar

    Da ich nix derartiges gefunden habe wie Der Befehl javac konnte nicht gefunden werden, habe ich einfach weiter gemacht, so wie das TuT von ihm es beschreibt.

    Spoiler:

    Wenn wir nun unseren "dir"-Befehl wiederholen, sehen wir, dass eine neue Datei dazugekommen ist:

    dir KMEC*


    Bild nicht mehr verfügbar

    Bei mir ist allerdings keine neue Datei dazu gekommen, wie man hier sieht.

    Und auch am Ende kommt bei mir nur folgendes, obwohl ich auch wie im TuT beschrieben, den Ordner netscape hinein kopiert habe.

    Bild nicht mehr verfügbar

    Wäre nett, wenn mir jemand helfen könnte.
    Und bitte keine unnötigen Kommentare oder ähnliches, es ist mehr oder weniger mein erstes kleines Projekt, an dem ich mich ran wage.
    Geändert von Darkfield (22.02.2014 um 06:54 Uhr)

  2. #2

    Registriert seit
    06.12.2011
    Beiträge
    150
    Thanked 30 Times in 22 Posts

    Standard [HELP] Knuddels Bot Client Programmierung

    Hast Du JDK Installiert?

    Javac Compiliert die Java Dateien zu Class Dateien, dass Fehlt bei dir. Somit müsste es am JDK liegen.

  3. #3

    Registriert seit
    07.06.2012
    Beiträge
    16
    Thanked 0 Times in 0 Posts

    Standard [HELP] Knuddels Bot Client Programmierung

    Ja, JDK habe ich installiert

    Diese Version.
    jdk1.6.0_24

    Daran kann es dann glaube ich nicht liegen.

  4. #4

    Registriert seit
    06.12.2011
    Beiträge
    150
    Thanked 30 Times in 22 Posts

    Standard [HELP] Knuddels Bot Client Programmierung

    NetScape vorher in das Verzeichnis gepackt?

  5. #5

    Registriert seit
    07.06.2012
    Beiträge
    16
    Thanked 0 Times in 0 Posts

    Standard [HELP] Knuddels Bot Client Programmierung

    Ja, der Ordner Netscape befindet sich ja in der plugin.jar, das habe ich entpackt und den Ordner Netscape dann hierrein kopiert, wie es im TuT beschrieben war:

    C:\dev\dec\knuddelsk90acl

    Da habe ich den Ordner rein kopiert.

  6. #6

    Registriert seit
    06.12.2011
    Beiträge
    150
    Thanked 30 Times in 22 Posts

    Standard [HELP] Knuddels Bot Client Programmierung

    Kannst Du mal einen Screen der Fehlermeldung Hochladen? (Falls Du es bereits getan hast, anderen Hoster bitte)

  7. #7

    Registriert seit
    07.06.2012
    Beiträge
    16
    Thanked 0 Times in 0 Posts

    Ausrufezeichen [HELP] Knuddels Bot Client Programmierung

    Das Problem hat sich mittlerweile von selbst gelöst, trotzdem besten Dank für Deine Hilfe.

    Es lag daran, das er in der Klasse t den Konstruktor t(String.int) nicht findet und das die GroupChat Klasse im 90acl-Applet nicht t sondern _t heißt. Und im 90acl wird nicht mehr e() sondern f() genutzt und statt m() jetzt n(), dass musste auch geändert werden, aber ein weiteres Problem habe ich dennoch und zwar folgendes:

    Bild nicht mehr verfügbar

    Channel-Hintergründe, männlich/weiblich Bilder, etc. werden nicht geladen. Spiele etc. können auch noch nicht gespielt werden.
    Wie kann ich das alles bei meinem Clienten hinzufügen?
    Geändert von Darkfield (22.02.2014 um 06:54 Uhr)

  8. #8

    Registriert seit
    06.12.2011
    Beiträge
    150
    Thanked 30 Times in 22 Posts

    Standard [HELP] Knuddels Bot Client Programmierung

    Du musst die Images fixxen.
    Hat MiBo das überhaupt in Angriff genommen?

    BugFixes für’s Applet | XKnuddels - The Developmentblog

  9. #9

    Registriert seit
    07.06.2012
    Beiträge
    16
    Thanked 0 Times in 0 Posts

    Ausrufezeichen [HELP] Knuddels Bot Client Programmierung

    Nein, soweit wie ich weiß bislang leider noch nicht.

    Ich habe folgenden Code herraus gefunden, aber irgendwie kann ich den nicht mit dem aktuellen Applet (90acl) angepasst.

    PHP-Code:
    import java.io.IOException;
    import javassist.CannotCompileException;
    import javassist.ClassPool;
    import javassist.CtClass;
    import javassist.CtMethod;
    import javassist.NotFoundException;

    /**
     *
     * Klasse zum "Javassisten" ;D
     *
     * @author PaTrick (PaT) | Visit U-Hacks.com
     */
    public class js {

      
    ClassPool pool;

      public 
    js() {
            try {
                    
    pool ClassPool.getDefault();

                    
    // Package´s importieren..
                    
    pool.importPackage("java.net");
                    
    pool.importPackage("java.awt");
                    
    pool.importPackage("java.awt.image");
                    
    pool.importPackage("java.io");

                    
    CtClass cc pool.get("_t"); // Hole mir die '_t'-Class (GroupCht Class)
                    
    w__(cc);
            } catch (
    Exception ex){
                    
    ex.printStackTrace();
            }
            }

            
    // Methode zum Schreiben der groupChat Klasse.
            
    private void w__(CtClass ccthrows NotFoundExceptionIOExceptionCannotCompileException {

            
    // Bilder Bug fixxen:
            // Damit die Bilder im Chat angezeigt werden müssen wir den richtigen Pfad angeben. Der Pfad lautet 'http://chat.knuddels.de/'. Da die Variable aber 'Private' ist können wir
            // von außen nicht darauf zugreifen. Deshalb holen wir uns mit Javassist die Variable und ändern den Modifier von der Variable auf 'Public'. Später können wir dann mit
            // "super.r = new URL("http://chat.knuddels.de/");" die URL setzen und die Bilder werden angezeigt ;)
            // Wer mehr wissen will, solle sich die Methoden in der Groupchat Klasse hier genauer anschauen:
            // 'private final Image c(String paramString, boolean paramBoolean)'
            // 'private final URL aa()'
            
    cc.getDeclaredField("r").setModifiers(1); // Hole mir die Variable 'r' und setze deren Modifier auf Public. 1 == Public / Man kann auch statt der '1', das benutzen: 'Modifiers.PUBLIC'.
            // Damit funktionieren zwar nun Hintergrundbilder, Smileys usw. Jedoch nicht die Fotos in den Profilen. Damit das funktioniet müssen wir noch eine Methode verändern.
            // Dazu holen wir uns die 'aa()'-Methode. Statt des normalen Codes setzen wir einfach ein 'return this.r' in die Methode.
            // Und haben auch diesen Bug gefixxt ;)
            
    cc.getDeclaredMethod("aa").setBody("return this.r;");
            
    // Der Teil mit den Fotos funktioniert aber meines Wissens nach nur bei .DE . Da in .CH, .AT und im MFC-Chat die URL anders ist.
            // Man müsste also die URL herausfinden, dann eine neue Variable zur GroupChat Klasse hinzufügen (Bsp.: 'public URL r2') und der neuen Variable dann die URL zuweisen..
            // Und natürlich müsst ihr dann in der 'aa()'-Methode nicht 'return this.r;' einfügen, sonder 'return this.r2;'.
            // Das könnt ihr ja selber machen ;D

            // Die Nickname, Passwort und der Channel TextField sind normal auf 'Private'. Da wir von außen aber darauf zugreifen wollen, ändern wir wieder den Modifier von 'Private' auf 'Public'.
            
    cc.getDeclaredField("bj").setModifiers(1);  // Nickname TextField
            
    cc.getDeclaredField("bk").setModifiers(1); // Passwort TextField
            
    cc.getDeclaredField("bl").setModifiers(1); // Channel TextField

            // Hole mir die Methode 'ad' mit dem Parameter 'java.util.StringTokenizer' ..
            
    CtMethod ad cc.getDeclaredMethod("ad", new CtClass[]{ pool.get("java.util.StringTokenizer") });
            
    // ..und setze deren Namen auf 'ad_old' und den Modifier setze ich auf 'Public'.
            
    ad.setName("ad_old"); ad.setModifiers(1);

            
    // Füge neue Methode zur groupChat Klasse hinzu...
            
    cc.addMethod(CtMethod.make("public void ad(java.util.StringTokenizer paramStringTokenizer) { ad_old($1); }"cc));

            
    // Schreibe die Klasse.
            
    cc.writeFile();
            }

      public static 
    void main(String[] argsthrows NotFoundException
      
    {
            
    js __ = new js();
      }


  10. #10
    Avatar von Mentos
    Registriert seit
    18.11.2011
    Beiträge
    451
    Thanked 498 Times in 240 Posts

    Standard [HELP] Knuddels Bot Client Programmierung

    Das Problem ist einfach, dass du die Klasse als deine ausgibst, sie aber überhaupt nicht verstehst und deshalb nicht mit ihr umzugehen weißt. Die Klasse kommt von N00B/PaT und wurde damals mit dem TestClienten released.

Ähnliche Themen

  1. Frage Knuddels Client
    Von Borussia Dortmund im Forum Knuddels Bots
    Antworten: 1
    Letzter Beitrag: 14.03.2012, 20:44
  2. Antworten: 0
    Letzter Beitrag: 07.03.2012, 23:31
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.