Chtěl jsem se trochu povrtat v projektu Apache POI, ale jak průvodci v NetBeans, tak instrukce na stránce projektu předpokládají, že se SVN umíte, jak když bičem mrská, což v mém případě bylo doteď přesně naopak :-)
Dobrý návod pro NetBeans najdete na http://www.netbeans.org/…version.html. Já se ho pokusím trochu zestručnít a tento extrakt obohatit o své zkušenosti.
Subversion jsem viděl poprvé, proto jsem se chvíli plácal v pojmech. Pro pořádek a pro začátečníky je tedy uvedu.
Zbytek pojmů najdete po netu, tohle je fakt jen nakopávací tutoriál :-)
Poznámka: Jak tak koukám, asi budu muset poladit CSS.
Nyní se trochu odchýlím od výše odkazovaného návodu. V NetBeans jsem provedl checkout projektu Apache POI.
Versioning →
Subversion → Checkout.Skip trunk and checkout it's contents. Tím se mi
src/ a další objeví přímo ve vybraném adresáři.Create project... a vybírám Java →
Java Project with Existing Sources. Next…build.xml.Browse a najděte adresář, kam jste stáhli
zdrojáky.build.xml zde již existuje, proto se build skript NetBeans
přejmenoval na nbbuild.xml. Next…src.
Ta neobsahuje (jak je obvyklé) rovnou hierarchii tříd, ale dále se dělí na
kategorie. Proto vyberte jen ty kategorie, které do projektu
chcete. Např.:src/java/ a
src/examples/src/. Next, Finish.Tím jste úspěšně založili projekt z SVN repository.
NetBeans začne projekt rovnou kompilovat, ale pravděpodobně nerozluští
některé reference. Je třeba dodat nějaké knihovny. V mém případě
hledá balíček org.apache.commons.logging.Log. To je notoricky
známá věc, takže pokud nemáte: stáhnout a přidat
.jar-ka jako novou knihovnu.
Nyní již kompilace proběhne vpořádku, pouze si překladač stěžuje na podivné volání funkcí,
warning: non-varargs call of varargs method with inexact argument type for last parameter;
za což může tato nezvyklá konstrukce v kódu projektu Apache POI:
Class clazz = (Class) VALUE_EVALS_MAP.get(ptg.getClass());
try {
if (ptg instanceof Area3DPtg) {
Constructor constructor = clazz.getConstructor(AREA3D_CONSTRUCTOR_CLASS_ARRAY);
retval = (OperationEval) constructor.newInstance(new Ptg[] { ptg });
}
...