Javában nem vagyok valami otthonos, most mégis arra lenne szükségem, hogy egy apró változtatás erejéig belenyúljak egy programba. A legjobb ingyenes (webes kimenetet is adó) adatbázis-vizualizátort a schemaSpy személyében ismerem; ebbe szeretnék belenyúlni. (Az is segítség, ha valaki megmondja, hogy paraméterezéssel hogy lehet e programban színeket változtatni az idegen kulcsokat összekötő vonalakon.)
A schemaSpy program a graphvizt (és a dotot) használja megjelenítőként, és ennek a leírásában szépen látszik, hogy pl. az edge [=red] révén piros vonalakat lehet húzni. Rá is jöttem, hogy a net/sourceforge/schemaspy/view/DotFormatter.class-ban kellene egy kicsit matatnom. Itt találtam néhány dekompillátort; az egyik egész jónak tűnik. Meglepő módon nem a JAD, JD, classeditor, Krakatau vagy a procyon jött be, hanem a cfr.
A fő kérdésem az, hogy a módosítás után (vagy akár módosítás nélkül) hogyan kell újra fordítani a programot linux alatt? Lehetséges-e ez úgy, hogy csak a DotFormatter.class fájlt dekompilláltam, vagy minden dependenciát dekompillálni kell? Ha csak simán nekiesek javac ...-vel, ad egy csomó "cannot find symbol" hibát.
(Ezt találtam, de talán van ennél egyszerűbb út is.)
- 4628 megtekintés
Hozzászólások
http://sourceforge.net/projects/schemaspy/files/schemaspy/SchemaSpy%205…
Ott a forrás, az miért nem jó?
Szerk.: Amúgy pedig simán fordulnia kéne úgy is, hogy minden függősége csak class fájlként van meg. Nem lehet, hogy rossz könyvtárból próbáltad fordítani és nem találta a class-okat?
BlackY
- A hozzászóláshoz be kell jelentkezni
Igazad van, szem elől tévesztettem a source.jar fájlt. :-) Köszi!
De a módosított kód lefordítása (úgy, hogy mást nem dekompillálunk) továbbra is érdekel: http://web2.osb.hu/z/2.zip
A 2-ben levő compile_me miért nem fut le? (Vagy másnál lefut?)
- A hozzászóláshoz be kell jelentkezni
Ez spec azért nem fordul le, mert az object[0-9]+ változók mind Object-ként vannak deklarálva (a hasNext() pl. a java.util.Iterator metódusa, az object4-nél erre panaszkodik). Kipróbáltam közben a JD-GUI-val is, az is lefordíthatlan kódot dob ki, azzal meg korábban hivatkozik később definiált változókra.
(közben egy tipp: ha jól látom, rossz fájlt nézel, a DotConnector osztály kell neked)
BlackY
- A hozzászóláshoz be kell jelentkezni
Köszi a tesztelést. Nemes egyszerűséggel az a helyzet, hogy hibázott az általam favorizált decompiler (is).
A forráskódból kivett .java fájlt átírva és berakva a már lefordított könyvtárrendszerbe, különösebb agyonparaméterezés nélkül, egyetlen javac paranccsal sikerült lefordítani a kiszemelt kódot (azaz valóban elég volt neki, ha .class-ként vannak körülötte a dependenciák). Konkrétan a "javac net/sourceforge/schemaspy/view/DotFormatter.java" parancs kellett neki. Az fontos volt, hogy mely könyvtárból indítom a fordítást.
- A hozzászóláshoz be kell jelentkezni