S problemem clashe mezi knihovnama se asi setkal uz kazdy. Jsou to ony vesele chvilky treba s Xercesem nebo jinym API s vice verzemi v classpath. Ano, jsou to ony ClassDefNotFoundError pripadne NoSuchMethodError. Pokud je pak classpath tvorena na vice mistech, muze nalezeni toho nespravneho jaru chvilku trvat.
A zde je otazka: Vedeli byste jak v jave zjistit cestu k jaru, z ktereho se mi dana classa naloadovala?
No ja bych na to sel bud pres URLClassLoader, pokud by to slo, protoze ten tu informaci obsahuje.
Druha varianta je tahle:
Code:
CodeSource codeSource = Test.class.getProtectionDomain().getCodeSource();
if (codeSource != null) {
URL url = codeSource.getLocation();
System.out.println(“url = ” + url);
}
Output:
url = file:/C:/work/cvs/rbuild/workdir/petarda_public/idoox/wasp-test/lib/junit.jar
Ale urcite je moznosti vic, ne? 🙂
…jako treba muze zafungovat
URL url = Wasp.class.getResource(“”);
System.out.println(“url = ” + url);
output:
url = jar:file:/C:/work/cvs/rbuild/workdir/petarda_public/idoox/wasp-test/wasp/lib/wasp.jar!/org/systinet/wasp/
🙂
ach jo, ty mas boruve zakazano odpovidat na kvizove otazky, ok? 🙂