Rekl bych ze toto je obecne problem s class.getResource("") - zalezi,
jestli se se spousti z JARu ci jineho JAR-like balicku nebo z classes.
Napr. pokud delate WAR nebo EAR, tak pak zalezi, jestli jej nasazujete
zabaleny nebo rozbaleny. Spise povazuji za chybu, ze Java neobsahuje
tridy pro praci s URL, ve kterem je 'jar!', jako s normalnim
filesystemem. Nejake projekty takove prostredky maji, treba JBoss VFS
(ale ten zase mival par bugu kdyz v ceste byla mezera, snad uz to
opravili).2009/9/7 Petr Prochazka <[email protected]>: > To je v poradku. NB pousteji maven goal pro compilaci (compiler:compile) a > ten preklada to target/classes a NB pro spusteni projektu tento pouziji jako > projektovou classpath a nepouziji vybuildovany jar soubor... > IMHO zadne IDE nepouziva pro spusteni vybuildovany jar, ale prelozene > classy... > > Petr Prochazka > 2009/9/7 Dusan Zatkovsky <[email protected]> >> >> No, tak tu je to podstatne zabavnejsie. >> >> package foo.test; >> public class App { >> public static void main(String[] args) { >> System.out.println(App.class.getResource("").getFile()); >> } >> } >> >> 1. pokial to pustim v NB, dostanem: >> /home/msk/NetBeansProjects/delme1234/target/classes/foo/test/ >> >> 2. pokial to pustim ako java -cp target/delme.jar foo.test.App, dostanem: >> >> file:/home/msk/NetBeansProjects/delme1234/target/delme1234-1.0-SNAPSHOT.jar!/foo/test/ >> >> ... cim som vlastne vyriesil dany problem len ciastocne, pretoze pri tomto >> zazracnom spravani nebudem schopny danu aplikaciu rozumne ladit :-) >> >> >> > Zkusil bych si vzit /getResourceAsStream("")/ (nebo /getResource("")/), >> > abych z toho ziskal typ File a znej si pak vytisknout |*getCanonicalPath >> > >> > <http://www.j2ee.me/javase/6/docs/api/java/io/File.html#getCanonicalPath%28 >> >%29>*(). >> > >> > >> > To Vam ukaze, kde je root. Nedavno jsem to resil uplne stejnym zpusobem, >> > ale kod jiz samozrejme nemam. >> > >> > Arny >> > >> > Dusan Zatkovsky wrote: >> > > Ahoj. >> > > >> > > Narazil som na problem s in-jar resources a neviem si rady. >> > > >> > > Vyrobim si maven quickstart projekt. V src/main/resources vytvorim >> > > subor >> > > foo.txt. Nasledne v main() zavolam: >> > > >> > > x = Main.class.getResourceAsStream("/foo.txt"); >> > > >> > > Dostanem inputstream na ten foo.txt. Ten je v jar-e ulozeny priamo v >> > > roote ako /foo.txt. >> > > >> > > Problem nastane v momente, ked do toho projektu pridam webservice >> > > client. >> > > Od tohoto momentu mi getResource() vracia null. Pravdepodobne to bude >> > > suvisiet s tym, ze maven nejak preorganicuje projekt kvoli tej WS, ale >> > > ja >> > > neviem, kde mam ten foo.txt nasledne hladat. >> > > >> > > V jar-e ho vidim v /META-INF/main/java/resources/foo.txt, ale neviem, >> > > kde >> > > vidi getResource() svoj root, pretoze som skusal od /META-INF postupne >> > > uberat kazdy podadresar a na vsetko som dostal null. >> > > >> > > Tusi niekto? >> > > >> > > D. >> -- >> Dusan > > -- Ondra Medek
