Note : ce chapitre a pour objet de rappeler les notions essentielles pour la compilation et l'exécution des programmes Java en dehors d'Eclipse.
Eclipse est un outil formidable, mais il masque au programmeur la complexité relative de la compilation et l'exécution avec Java. Nous tentons donc de montrer dans ce chapitre comment procéder.
On crée un répertoire pour notre projet, par exemple projet :
mkdir projet
cd projet
On peut reprendre l'organisation d'Eclipse, qui est celle liée aux projets Java de manière générale. On crée deux répertoires principaux :
Eventuellement, si on utilise des librairies externes, on crée un répertoire lib dans lequel on placera les .jar
En Java, afin de séparer et identifier les classes, on crée des packages :
package com.public.server;
public class ServerHttp {
...
}
Au niveau de l'arborescence cela implique que le fichier ServerHttp.java sera placé dans le répertoire : src/com/public/server.
Voici un exemple d'arborescence :
rmi_example/
├── build
│ ├── client
│ │ ├── ComputeApplet$1.class
│ │ ├── ComputeApplet.class
│ │ └── ComputeClient.class
│ ├── common
│ │ ├── ComputeInterface.class
│ │ ├── InputData.class
│ │ └── Result.class
│ └── server
│ ├── ComputeImplementation.class
│ ├── ComputeServer.class
│ └── ComputeServerRegistryLaunch.class
├── build.xml
├── README
├── server.policy
└── src
├── client
│ ├── compute_applet.html
│ ├── ComputeApplet.java
│ └── ComputeClient.java
├── common
│ ├── ComputeInterface.java
│ ├── InputData.java
│ └── Result.java
└── server
├── ComputeImplementation.java
├── ComputeServer.java
└── ComputeServerRegistryLaunch.java
On se place dans le répertoire du projet :
cd projet
javac -d build -cp src src/com/public/server/ServerHttp.java
Les options sont les suivantes :
Si il existe une hiérarchie de répertoires alors, on peut utiliser :
files=`find src -name "*.java" -print | tr '\n' ' '` && javac -d build -cp src $files
ou plus simplement :
find -name "*.java" | xargs javac -d build
Si on fait appel à une librairie externe (.jar) il faudra la spécifier dans le classpath, par exemple :
javac -d build -cp src:lib/logging.jar src/com/public/server/ServerHttp.java
On utilise le même principe que pour la compilation concernant le classpath, par contre on fait référence aux classes par leurs noms et le package dans lequel elles se trouvent :
java -cp build com.public.server.ServerHttp
Ici, on tente d'exécuter :
On peut utiliser make pour automatiser la compilation et l'exécution, ou alors ant qui est un make au format XML dédié initialement à Java
Voici un exemple (build.xml) de fichier de compilation lié à ant (cf documentation) :