Program Java - funkcje publiczne API

0

Witam.
Nie wiem czy dobry dział, ale wg mnie najbardziej pasuje.

Czy ktoś z was potrafi mi powiedzieć jak z pliku jar (lub działającej aplikacji) wyciągnąć funkcję które są dostępne z zewnątrz (jest sobie aplikacja która posiada API - niestety nieosiągalna).
Czy ktoś ma na to pomysł? Potrzeba mi tylko parę funkcji.

Wiem, że to jest możliwe niestety nie wiem jak.
Dziękuję za wszelką pomoc.

0

Po pierwsze skopiuj jara do zipa, żeby zobaczyć nazwy klas. Potem skorzystaj z mechanizmów refleksji. Poniżej przykład

/* Klasa wyświetla informację o metodach klasy, która jest
 * parametrem wywołania. Default wyświetla "swoje" metody.
 * Wyświetla tylko metody zadeklarowane - nie wśťwietla
 * metod odziedziczonych.
 */
import java.lang.reflect.*;

public class ShowMethods
{
    public static void main(String[] args)
    {
        Class badana=null;
        try
        {
            if (args.length>0)
            {
                badana=Class.forName(args[0]);
            }
            else
            {
                badana=Class.forName("ShowMethods");
            }
            Method[] metody=badana.getDeclaredMethods();
            for (int i=0;i<metody.length;i++)
            {
                Method metoda=metody[i];
                Class wartosc=metoda.getReturnType();
                int mod=metoda.getModifiers();
                String modyfikatory=Modifier.toString(mod);
                Class[] param=metoda.getParameterTypes();
                StringBuffer parametry=new StringBuffer("");
                for (int j=0;j<param.length;j++)
                {
                    parametry.append((j>0?",":"")+param[j].getName());
                }
                System.out.println("      Metoda: "+metoda.getName()+"()");
                System.out.println("Modyfikatory: "+modyfikatory);
                System.out.println("Zwracany typ: "+wartosc.getName());
                System.out.println("   Parametry: "+parametry+"\n");
            }
        }
        catch(ClassNotFoundException e)
        {
            System.out.println(e.toString());
        }
    }
}
0

Jak chcesz używać jara do dodaj go do classpatha i wszystkich publicznych metod możesz używać. A jak chcesz podejrzeć co jar zawiera to najłatwiej w eclipsie ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1