kostenloser Webspace werbefrei: lima-city


[Java] Code in eine Klasse eines Applets einfügen

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    n*k

    Hallo zusammen
    Ich habe ein Java-Applet (Endung: .jar) nun will ich einen kleinen Schnipsel Code in eine Datei innerhalb des Applets einfügen. Kennt jemand ein geeignetes Programm nennen?
    Achja... das JDK hab ich schon probiert:

    Ich hab den code in einer *.class datei gespeichert und versucht zu überschreiben...
    "jar um0f postlet.jar UploadThread.class" hat leider auch nicht geklappt

    Gruß NGK
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e********l

    Willst du eine Class Datei in ein JAR einfügen oder willst du Bytecode überschreiben? Letzteres geht nicht ohne entsprechende Rechte.
  4. Autor dieses Themas

    n*k

    Hallo.
    Ich will code überschreiben bzw hinzufügen in eine vorhandene Klasse. Wieso geht das nicht ohne weiteres?
  5. e********l

    Das geht nunmal nicht ohne weiteres. Um ins JAR des Applets schreiben zu können müsstest du schreibrechte auf dem jeweiligen PC für das Applet anfordern und dann müsstest du noch eine API mitliefern mit dem du den Bytecode manipulieren kannst.

    Ich frag mich gerade was du überhaupt damit anstellen willst, denn Bytecode Instrumentierung ist nicht von ungefähr und sollte nur genutzt werden, wenn man genau weiß was man tut.


    Beitrag geändert: 9.10.2007 14:41:09 von evil-devil
  6. Autor dieses Themas

    n*k

    Also
    Das Applet ist zum Hochladen von Bilden gedacht. Es kann diese auch skalieren aber bisher nur anhand einer per Parameter festgelegten Pixelzahl. Und das stinkt mir. Deswegen habe ich mir den Bytecode mal angeguggt und rausgefunden wo das verändert wird. da würde ich dann folgendes einfügen.
    if((origWidth>800) || (origHeight>600))
            {
              if(origWidth>origHeight) {
                 if(origWidth>800) {
                     newWidth= (int) 800;
                     newHeigth=(int) origHeight*newWidth/origWidth;
                 }
                 else {
                     newWidth= (int) origWidth;
                     newHeigth= (int) origHeight;
                 }
              }
              else {
                 if(origHeigth>600) {
                     newHeigth= (int) 600;
                     newWidth=(int) origWidth*newHeigth/origHeight;
                 }
                 else {
                     newHeigth= (int) origHeight;
                     newWidth= (int) origWidth;
                 }
              }


    Da ist ja wohl nichts falsches dran oder? :P

    Gruß NGK
  7. e********l

    Natürlich ist das Falsch. Denn das eine ist Bytecode und das andere ist Javacode der noch nicht in ByteCode übersetzt wurde. Um das zu demonstrieren hier dein Codeschnipsel in einer kleinen Klasse...

    public class IfAbfrage {
        
        private int origWidth = 0;
        private int origHeight = 0;
        private int newHeight = 0;
        private int newWidth = 0;
        
        public void resize() {
            if((origWidth>800) || (origHeight>600))
            {
              if(origWidth>origHeight) {
                 if(origWidth>800) {
                     newWidth= (int) 800;
                     newHeight=(int) origHeight*newWidth/origWidth;
                 }
                 else {
                     newWidth= (int) origWidth;
                     newHeight= (int) origHeight;
                 }
              }
              else {
                 if(origHeight>600) {
                     newHeight= (int) 600;
                     newWidth=(int) origWidth*newHeight/origHeight;
                 }
                 else {
                     newHeight= (int) origHeight;
                     newWidth= (int) origWidth;
                 }
              }
            }
        }
    }


    Und der dazugehörige ByteCode
    // Decompiled by DJ v3.9.9.91 Copyright 2005 Atanas Neshkov  Date: 09.10.2007 15:34:32
    // Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
    // Decompiler options: packimports(3) disassembler 
    // Source File Name:   IfAbfrage.java
    
    
    public class IfAbfrage
    {
    
        public IfAbfrage()
        {
        //    0    0:aload_0         
        //    1    1:invokespecial   #13  <Method void Object()>
        //    2    4:aload_0         
        //    3    5:iconst_0        
        //    4    6:putfield        #15  <Field int origWidth>
        //    5    9:aload_0         
        //    6   10:iconst_0        
        //    7   11:putfield        #17  <Field int origHeight>
        //    8   14:aload_0         
        //    9   15:iconst_0        
        //   10   16:putfield        #19  <Field int newHeight>
        //   11   19:aload_0         
        //   12   20:iconst_0        
        //   13   21:putfield        #21  <Field int newWidth>
        //   14   24:return          
        }
    
        public void resize()
        {
        //    0    0:aload_0         
        //    1    1:getfield        #15  <Field int origWidth>
        //    2    4:sipush          800
        //    3    7:icmpgt          20
        //    4   10:aload_0         
        //    5   11:getfield        #17  <Field int origHeight>
        //    6   14:sipush          600
        //    7   17:icmple          142
        //    8   20:aload_0         
        //    9   21:getfield        #15  <Field int origWidth>
        //   10   24:aload_0         
        //   11   25:getfield        #17  <Field int origHeight>
        //   12   28:icmple          88
        //   13   31:aload_0         
        //   14   32:getfield        #15  <Field int origWidth>
        //   15   35:sipush          800
        //   16   38:icmple          69
        //   17   41:aload_0         
        //   18   42:sipush          800
        //   19   45:putfield        #21  <Field int newWidth>
        //   20   48:aload_0         
        //   21   49:aload_0         
        //   22   50:getfield        #17  <Field int origHeight>
        //   23   53:aload_0         
        //   24   54:getfield        #21  <Field int newWidth>
        //   25   57:imul            
        //   26   58:aload_0         
        //   27   59:getfield        #15  <Field int origWidth>
        //   28   62:idiv            
        //   29   63:putfield        #19  <Field int newHeight>
        //   30   66:goto            142
        //   31   69:aload_0         
        //   32   70:aload_0         
        //   33   71:getfield        #15  <Field int origWidth>
        //   34   74:putfield        #21  <Field int newWidth>
        //   35   77:aload_0         
        //   36   78:aload_0         
        //   37   79:getfield        #17  <Field int origHeight>
        //   38   82:putfield        #19  <Field int newHeight>
        //   39   85:goto            142
        //   40   88:aload_0         
        //   41   89:getfield        #17  <Field int origHeight>
        //   42   92:sipush          600
        //   43   95:icmple          126
        //   44   98:aload_0         
        //   45   99:sipush          600
        //   46  102:putfield        #19  <Field int newHeight>
        //   47  105:aload_0         
        //   48  106:aload_0         
        //   49  107:getfield        #15  <Field int origWidth>
        //   50  110:aload_0         
        //   51  111:getfield        #19  <Field int newHeight>
        //   52  114:imul            
        //   53  115:aload_0         
        //   54  116:getfield        #17  <Field int origHeight>
        //   55  119:idiv            
        //   56  120:putfield        #21  <Field int newWidth>
        //   57  123:goto            142
        //   58  126:aload_0         
        //   59  127:aload_0         
        //   60  128:getfield        #17  <Field int origHeight>
        //   61  131:putfield        #19  <Field int newHeight>
        //   62  134:aload_0         
        //   63  135:aload_0         
        //   64  136:getfield        #15  <Field int origWidth>
        //   65  139:putfield        #21  <Field int newWidth>
        //   66  142:return          
        }
    
        private int origWidth;
        private int origHeight;
        private int newHeight;
        private int newWidth;
    }


    Gewaltiger Unterschied, oder? ;)
  8. Autor dieses Themas

    n*k

    Hallo.
    jaaa ^^ gro&#223;es missverst&#228;ndniss. :P die benutzen Variabeln sind nat&#252;rlich schon von dem Applet definiert .. ich h&#228;tte das ja nur so in die Klasse eingef&#252;gt. Der Code ansich war ja richtig.

    Gru&#223; NGK
  9. e********l

    Bringt dir trotzdem nichts, denn solange du den Sourcecode von dem Applet nicht hast kannst du deinen Javacode da nicht einbringen. Es seidenn du wei&#223;t wie man eine die If Abfrage in ByteCode schreibt ;)

    Und dann w&#252;rdest du immernoch geltendes Copyright Recht verletzen, da du eine SOftware modifizierst ohne die ausdr&#252;ckliche GEnehmigung des Autoren.
  10. Autor dieses Themas

    n*k

    die software gibs als opensouce auf sourceforge und der code zum &#228;ndern stand so &#228;nlich in der Hilfe.
    http://sourceforge.net/project/showfiles.php?group_id=136812
    W&#252;sstest du denn ein Programm mit dem sowas geht? Also erst entpacken, dann decompilen, dann w&#252;rde ich meinen code reinschreiben und wieder compilen und wieder in das jar Archiv.

    Gru&#223; NGK
  11. e********l

    Bist du blind? Da steht doch der Link zum Source Download auf der Seite. Source downloaden, anpassen, kompilieren und in JAR packen.
  12. Autor dieses Themas

    n*k

    Ja mit der ruhe... Die hab ich mir ja schon runtergeladen. Aber erstens sind da ganz andere ordner und mehr dateien drin, als wenn ich so in das jar archiv gugge und 2. hab ich keine ahnung wie ich das compile und zusammenpacke :confused:
    zusammenpacken mit dem jar tool aussm jdk, aber welche befehle muss ich da nehmen?

    Gru&#223; NGK
  13. e********l

    Tja, zum kompilieren ben&#246;tigst du das Java Development Kit (JDK). Das gibt es unter http://java.sun.com/ und nachdem du das installiert hast, den Classpath eingetragen hast und den Sourcecode entpackt hast, kannst du das kompilieren. Wahlweise unter zu Hilfenahme einer IDE wie zb. Eclipse, Netbeans, etc oder direkt von der Konsole. Letzteres ist ohne Vorkenntnisse entsprechend schwieriger.

    @VIel mehr Dateien: Naja, vielleicht stellt das JAR nur die Minimumkonfiguration da...hab das ganze nicht geladen und werd dazu heute wohl nicht kommmen. Hab erst um halb neun feierabend.
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!