View Full Version : [JAVA]Fare una classe che esegue il compilatore
DesmoColo
16-02-2006, 12:30
Ciao a tutti!
Avre bisogno di implementare una classe che opera nel seguente modo:
cerca tutti i file *.java nella directory corrente dove si trova il file.class;
fa eseguire il comando javac *.java per compilare le directory corrente.
è possibile implementare qualcosa del genere? Mi potete aiutare con uno pseudocodice che mi dica quali classi da importare e quali metodi mi servono?
Ogni consiglio, seppur minimo, è bene accetto!!! ;-)
Grazie a tutti quelli che leggeranno questo post
Ciao a tutti!
Avre bisogno di implementare una classe che opera nel seguente modo:
cerca tutti i file *.java nella directory corrente dove si trova il file.class;
fa eseguire il comando javac *.java per compilare le directory corrente.
è possibile implementare qualcosa del genere? Mi potete aiutare con uno pseudocodice che mi dica quali classi da importare e quali metodi mi servono?
Ogni consiglio, seppur minimo, è bene accetto!!! ;-)
Grazie a tutti quelli che leggeranno questo post
Ma hai semplicemente bisogno di compilare in modo comodo e veloce un insieme di sorgenti??? Cioè vuoi "automatizzare" il processo di compilazione??? Per questo esiste Ant (http://ant.apache.org)!
DesmoColo
16-02-2006, 13:02
Utilizzo già ant per altri scopi, ma quello che cerco è diverso:
creo un file generatore.java (con all'interno un main), che al suo interno contiene il codice per creare un file nuovaclasse.java (utilizzando i metodi della classe fileWriter);
A questo punto utilizzo ant per compilare, e una volta andato tutto a buon fine viene creato il file generatore.class
Facendo
java generatore viene creato nella directory corrente il file nuovaclasse.java.
Adesso voglio che generatore.java oltre a creare nuovaclasse.java la compili, ma non so come fare...
alexanderf
17-02-2006, 11:11
Salve ragazzi cio sto programmino che mi visualizza i numeri primipero no riesco a far visualizzare i suoi divisori esempio cio 3 e divisible solo con 3 oppure cio 4 e divisibile con 2 e 4
public class NumeriPrimi{
static int primo;
static int i;
public static String numeroPrimo(int primo){
if(primo==2){
return"è un numero primo";
}else if (primo==3){
return "è un numero primo";
}else if (primo==5){
return "è un numero primo";
}
if ((primo%2)==0) {
return"non è numero primo";
}else if ((primo%3)==0){
return"non è un numero primo";
}else if ((primo%5)==0){
return"non è un numero primo";
}
return"é un numero primo";
}
public static void main(String args[])
{
//NumeriPrimi primo = new NumeriPrimi();
String risposta=NumeriPrimi.numeroPrimo(3) System.out.println(risposta);
}
}
alexanderf: non puoi postare ovunque questa cosa... Apri un tuo thread e non inquinare altri thread... Grazie
slowguitar
17-02-2006, 12:35
Ciao non so se ho capito esattamente il tuo problema (non so cosa sia Ant)
pero' prova a far eseguire questo per la compilazione del file
Runtime.getRuntime().exec("javac "+ il nome del tuo file da compilare);
penso pero' che se lo fai girare su una macchina con il jre e che non ha il compilatore non ti funza dato che non c'e' il compilatore...
Ciao non so se ho capito esattamente il tuo problema (non so cosa sia Ant)Ant è un tool per il build. Se conosci in qualche modo (anche solo in generale) i Makefile e i vari tool come make, nmake, ecc..., bene, sappi che Ant ha gli stessi obiettivi ma utilizza la tecnologia Java e i file XML.
pero' prova a far eseguire questo per la compilazione del file
Runtime.getRuntime().exec("javac "+ il nome del tuo file da compilare);Infatti questo è il modo più semplice.
penso pero' che se lo fai girare su una macchina con il jre e che non ha il compilatore non ti funza dato che non c'e' il compilatore...Ovviamente. ;)
Ciao non so se ho capito esattamente il tuo problema (non so cosa sia Ant)
pero' prova a far eseguire questo per la compilazione del file
Runtime.getRuntime().exec("javac "+ il nome del tuo file da compilare);
così da Java fai una chiamata a quello che non è altro che un wrapper per un'altra applicazione java.
non ne hai la necessità:
com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
String[] args = new String[]{ nomefile};
int ret = javac.compile(args);
devi avere tools.jar in classpath
com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
String[] args = new String[]{ nomefile};
int ret = javac.compile(args);
Ma com.sun.* è "undocumented", vero???
Ma com.sun.* è "undocumented", vero???
sì.
la lista degli switch supportati è la stessa che per javac.
DesmoColo
17-02-2006, 16:13
Ho inserito il codice di slowguitar e tutto ok.
Per quanto riguarda l'altro sistema ho provato ma non funziona (probabilmente perchè non ho settato il classpath) ma cmq visto che funziona adottero il metodo di slowguitar, anche pensando che il programmino che ho fatto potrebbe girare anche su machine che hanno il classpath senza tolls.jar
Grazie ancora a tutti
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.