A jaký má Eclipse důvod mít vlastní kompilátor? A jaké má Eclipse kompilátor výhody? Oproti standardnímu javac od Oraclu?
Libor Dne 19. dubna 2011 15:16 Tomáš Záluský <[email protected]> napsal(a): > > >Eclipse kompilator se da pouzit i standalone, je nejaky duvod proc ho tak > >nemuzes pouzit v build procesu? > > Zřejmě není, nejspíš na něj přejdeme. Budeme ale muset vyřešit, že je to > pro Javu 1.5. > Omlouvám se za odmlku, nějak mi toto vlákno vypadlo z pozornosti. > Díky Romane :-) > > Tomáš > > > ================================================ > ...with Ultimate flying is so easy... > http://www.frisbee.cz http://www.peaceegg.net > ================================================ > > > > > > ______________________________________________________________ > > Od: "Roman Pichlík" <[email protected]> > > Komu: Java <[email protected]> > > Datum: 25.03.2011 11:10 > > Předmět: Re: javac vs. Eclipse - čísla řádků v .class u víceřádkových > výrazů > > > >Eclipse kompilator se da pouzit i standalone, je nejaky duvod proc ho tak > >nemuzes pouzit v build procesu? > >Dne 24.3.2011 12:11 "Tomáš Záluský" <[email protected]> napsal(a): > >> > >> Dobrý den, > >> > >> narazil jsem na zajímavý problém s generováním čísel řádků do class > >souboru. > >> Následující minimalizovaný program vyhodí výjimku, ale stacktracy se > liší > >číslem řádky podle toho, čím byl program zkompilován. > >> > >> public class SourceLines { > >> > >> public static class Foo { > >> public Foo withHoo(String hoo) { > >> return this; > >> } > >> } > >> > >> public static String n() { > >> return null; > >> } > >> > >> public static void main(String[] args) throws Exception { // toto je > radek > >13 > >> Foo f = new Foo() > >> .withHoo("x") > >> .withHoo(n().toUpperCase()); > >> } > >> > >> } > >> > >> Pokud je program zkompilován Eclipsem, vypíše se: > >> > >> Exception in thread "main" java.lang.NullPointerException > >> at SourceLines.main(SourceLines.java:16) > >> > >> Pokud je program zkompilován pomocí javac -g, vypíše se: > >> > >> Exception in thread "main" java.lang.NullPointerException > >> at SourceLines.main(SourceLines.java:14) > >> > >> Disassemblováním class souboru zjišťuji, že Eclipse při zkompilování > >respektuje jednotlivé řádky, na kterých se nachází zřetězené metody, > zatímco > >javac to nahází na jeden řádek. Použil jsem > >http://java.decompiler.free.fr/, ale stejný závěr je zřejmý i z volání > >javap -l -c. > >> > >> Nevíte, zda se dá javac v tomto nějak ovlivnit? Všude jsem našel jen > popis > >k přepínači -g, ale nic nenasvědčuje, že by to šlo ještě zjemnit. > >(Mimochodem JDK7 developer preview se chová stejně.) Přijde mi to jako > dost > >podstatná nevýhoda pro používání fluent API, protože to vylučuje zapsání > >vnořeného výrazu do parametru volané metody. > >> > >> Nepovažuji vnořené výrazy za obecně dobrou praktiku, ale někdy to nejde > >jinak, aniž by se snížila čitelnost. Výše uvedený příklad je z praxe, kdy > >jsme takto hledali NullPointerException v řetězu přes jednu stránku. > >Vyvíjeno pod Eclipsem, zkompilováno Mavenem (JDK javac), nasazeno na > Tomcat > >(JDK java). > >> > >> Či znáte jiné alternativy? > >> > >> Děkuji! > >> > >> Tomáš Záluský > >> > >> > >> > >> ================================================ > >> ...with Ultimate flying is so easy... > >> http://www.frisbee.cz http://www.peaceegg.net > >> ================================================ > > > > >
