[ filmil @ 21.04.2004. 23:42 ] @
Ovih dana u jednom programu koristim (malo vremešnu) biblioteku OpenJGraph za rad sa grafovima. OpenJGraph ima zanimljivu mogućnost da grafove serijalizuje u GraphML. Na žalost, deo za serijalizaciju nije dorađen kao grafovski, pa se prilagođavanje koda iz njega svodi na izmeštanje izvornog koda u drugi paket i onda izmenu hardkodovanih delova. Nije elegantno, ali je priručno rešenje. Deo koda jednog modula izgleda ovako: Code: import org.apache.xerces.parsers.SAXParser; // ... this.parser = new SAXParser(): // ... public void endSerialize() throws Exception { this.readerAdapter.endElement( "", XGMML.GRAPH_ELEMENT_LITERAL, XGMML.GRAPH_ELEMENT_LITERAL ); this.parser.endDocument(); } A pri prevođenju se javlja sledeća greška: Code: GraphToXGMMLSAXHandler.java:291: cannot resolve symbol symbol : method startDocument () location: class org.apache.xerces.parsers.SAXParser this.parser.startDocument(); Javljaju se još 3 slične greške, koje se sve žale da „cannot resolve symbol: method taj-i-taj“ u klasi SAXParser. Najnormalniji zaključak bio bi da u klasi SAXParser ne postoji dotični metod startDocument(); međutim, originalna datoteka na originalnoj lokaciji (i paketu) se prevodi bez grešaka iako sadrži u principu isti ovaj kod. Klasu GraphToXGMMLSAXHandler sam morao da prebacim zato što je (nepotrebno) privatna klasa parsera. Da li postoji još neki slučaj u kome gorepomenuta greška može da se javi? Koliko sam video $CLASSPATH je podešen kako treba pri prevođenju. Na žalost nemam izvorni kod od xercesa da pogledam o čemu se tačno radi, a od vremena kad je OpenJGraph napravljen do sada, interfejs xercesa se toliko promenio da na Internetu po svoj prilici više ne postoji javadoc za ovu staru verziju. Pogled u .class datoteku za SAXParser otkriva da postoji simbol startDocument. f |