Nie dziala poniewaz (przynajmniej w sunowej javie) zaraz na starcie wirtualnej maszyny tworzone sa instancje dwoch nieudokumentowanych classloaderow: jeden dla classpath a drugi dla extensions. Sa to proste podklasy URLClassLoader, ktore do konstruktora maja podawane:
- pierwszy ma podawane wszystkie katalogi i jary w postaci URL ktore odczytywane sa z classpath
- drugi (extensions) wszystkie jary ktore znajduja sie w JAVA_HOME/lib/ext i te ktore podasz jako zmienna systemowa java.ext.dirs (od javy 6 moze miec wiecej niz jeden katalog)
Zatem mozesz korzystac tylko z klas ktore one widzialy w momencie utworzenia. Pozniej te zmienne juz sie do niczego nie przydaja, wiec nawet jesli robisz updejt classpath za pomoca System.setProperty to i tak nic to nie pomoze.
Jesli koniecznie chcesz zeby dynamicznie tworzyc classpath, mozesz utworzyc taki kod na starcie:
ClassLoader myCl = new URLClassLoader(new File("sss").toURI().toURL()), ClassLoader.getSystemClassLoader());
teraz swoje dynamicznie dodane klasy do classpath mozesz wgrywac np tak:
Class<Klasa> cl = myCl.loadClass("Klasa");
Nie sadze jednak ze o to ci chodzi, nie dziala tak jak podawalem wczesniej? Kompilacja w Eclipse i samodxielnie Javac nie ma znaczenia, a roznia sie dlatego ze eclipse ma swoj wlasny kompilator.
Pozdrawiam