View Full Version : [Java] Javassist. Qualcuno di voi lo utilizza?
Salve a tutti, qualcuno sul forum ha mai utilizzato javassist? Volevo servirmene per modificare alcune classi runtime, ma non idea di come funzioni e le istruzioni mi paiono un po' ingarbugliate :)
banryu79
07-07-2009, 14:49
Salve a tutti, qualcuno sul forum ha mai utilizzato javassist? Volevo servirmene per modificare alcune classi runtime, ma non idea di come funzioni e le istruzioni mi paiono un po' ingarbugliate :)
Ciao,
premetto che non l'ho mai utilizzato, ma dopo una lettura di 30 sec. sul sito di riferimento ho vagamente capito a che serve: per curiosità a te a cosa servirebbe fare, se posso chiedere?
Comunque qui c'è un tutorial (http://www.csg.is.titech.ac.jp/~chiba/javassist/tutorial/tutorial.html) base, mi pare anche molto chiaro.
Probabilmente sono le mie competenze informatiche che scarseggiano allora :) :) :)
Dovrei cambiare l'indirizzo di connessione di un paio di server presenti nel file class di una midlet. ti faccio un esempio:
nella midlet ho una cosa tipo $host = "http://pippo"; ecco, avrei bisogno di sostituire "pippo" con "pluto" ;)
Tutto questo perchè vorrei fare in modo che un browser web, concepito per gli utenti mobili di H3G Hong Kong (Tre HK) funzioni anche qui in Italia. La versione distribuita da 3 Italia è molto più vecchia, infatti, di quella cinese (ad esempio supporta anche i cellulari dotati di touch screen) ;)
Pensi sia possibile?
banryu79
07-07-2009, 16:07
Probabilmente sono le mie competenze informatiche che scarseggiano allora :) :) :)
Ma no, con 'ho vagamente capito a che serve' intendevo letteralmente quello che ho affermato: ovvero ho capito che serve a manipolare il bytecode di file .class già generati, tutto qua :)
Pensi sia possibile?
Credo proprio di sì: alla fine devi solo localizzare e modificare parzialmente il valore di una String nel .class.
Ho fatto una prova banale con un file java fatto così:
public class Bytecode
{
public static void main(String[] argv)
{
String path = "dbConnection::pippo::localhost";
System.out.println(path);
}
}
ho compilato il .class e l'ho lanciato: stampa a video la stringa:
dbConnection::pippo::localhost
Poi ho aperto il .class con un editor di testo, ho trovato la stringa e l'ho editata cambiando pippo in pluto.
L'ho lanciato e stampa:
dbConnection::pluto::localhost
Grazie mille. Ora provo a vedere se riesco a fare quello che vorrei, allora :)
Intanto di nuovo grazie :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.