2010-08-05 11 views
26

J'écris un fichier makefile qui compile un fichier .java dans un répertoire différent, puis je veux l'exécuter, sans changer de répertoire. Je veux faire quelque chose le long des lignes de:Comment compiler et exécuter une classe Java dans un répertoire différent?

$(SQM_JAVA_TOOL_DONE) : $(SQM_JAVA_TOOL) 
     $(shell cd /home_dir) 
     javac myjavafile.java 
     java myjavafile 

où le fichier Java est /home/myjavafile.java et le makefile ne fonctionne pas de /home.

Comment est-ce que je peux faire ceci?

+1

Pourquoi ne pas créer un script Ant et passer le chemin complet du fichier build.xml pour compiler vos fichiers java? –

Répondre

32

je pourrais être malentendu à la question, mais vous pouvez compiler avec

javac /home/MyJavaFile.java 

Cela va créer MyJavaFile.class dans /home

Vous pouvez ensuite l'exécuter en incluant /home sur le chemin de classe. par exemple.

java -cp /home MyJavaFile 

Si vous souhaitez générer le fichier de classe dans un autre répertoire que vous pouvez ensuite utiliser l'option -d-javac.

+1

J'ai essayé 'java -cp '.: Lib/dropbox-noyau-sdk-1.7.5.jar: lib/jackson-noyau-2.2.3.jar: lib/javax.mail.jar"/bin Client1 ", mais le linker craché: 'Erreur: Impossible de trouver ou de charger la classe principale .bin'. – Andrei

32

Utilisez le paramètre de ligne de commande -d avec javac pour lui dire ce répertoire que vous souhaitez stocker les fichiers de classe compilés dans Ensuite, pour exécuter le programme, il suffit d'inclure ce répertoire dans le classpath.

javac -d some/directory myjavafile.java 
java -cp some/directory myjavafile