Podobno najlepiej każdy problem przedstawić na przykładzie, co też uczynię.
Załóżmy, że mamy plik jar umiejscowiony na C:\ (Windows), wewnątrz klasę Main. natomiast w klasie Main metodę:
static String getString(){...}
W tej metodzie zaś następującą instrukcję:

        URL url = getClass().getClassLoader().getResource(getClass().getName().
                replaceAll("\\.", "/") + ".class");

Po wykonaniu tej metody wartość url będzie miała postać:
C:\plik.jar!/Main.class
I teraz: czy jest możliwe uruchomienie metody getString() z pliku jar z zewnątrz (czyli budujemy klasę A, ale umiejscawiamy ją nie w pliku jar tylko bezpośrednio na C:)? Tak. jest możliwe. Budujemy strumień JarInputStream, następnie ładujemy nasz plik.jar, dalej wyciągamy z niego Main.class, ładujemy tą klasę i "invokujemy" metodę getString. Tylko teraz url będzie miał postać:
C:\Main.class
Czy jest możliwe uruchomienie metody getString z zewnątrz w taki sposób, aby wartość url miała postać:
C:\plik.jar!/Main.class
?

Dzięki za odp.