Java sous Bash dans Windows 10

Windows10 intègre la possibilité d'installer ubuntu en ligne de commande, ce qui permet de compiler et exécuter du java sous bash (interpréteur, équivalent de dos).
Restriction : les programmes utilisant le serveur graphique (comme appletviewer) ne peuvent pas s'exécuter de cette manière.

Installer Linux sous Windows

Vous êtes maintenant dans un terminal Linux, vous pouvez taper des commandes bash.
Les fichiers que vous créez sous Linux sont accessibles aussi depuis Windows.
Sur mon poste, ils se trouvent dans C:\Users\IEUser\AppData\Local\lxss\home\thierry
(IEUser est mon user windows et thierry mon user linux).

Pour tester à quel endroit de votre ordinateur se trouvent les fichiers linux :

Préparer Linux et installer java

A partir de maintenant, toutes les commandes se font dans la console Linux.
Saisissez votre mot de passe Linux lorsque le shell vous le demande. (ces commandes prendront du temps à s'exécuter et afficheront pas mal de messages).

Tester que java fonctionne

Dans la console bash, créez un fichier Main.java avec du code de test :
printf "class Main{\n    public static void main(String[] args){\n        System.out.println(\"hello\");\n    }\n}\n" > Main.java
Vérifiez que Main.java est présent
ls
(ls = liste les fichiers et répertoires du répertoire courant ; équivalent de dir sous dos) Vous devriez voir Main.java.
Compilez Main.java
javac Main.java
Si vous refaites ls, vous devriez voir Main.class Main.java
Exécutez Main
java Main
Main devrait s'exécuter et afficher hello/

Utilisation

On va exécuter le tp3 (sauf les applets) en reproduisant la hierarchie présente sur le serveur.

Préparatifs supplémentaires

sudo apt-get install tree
Créer les répertoires
mkdir -p nfp121/{bin,tps/tp3-pile}
# équivalent à :
# mkdir nfp121
# cd nfp121
# mkdir bin
# mkdir -p tps/tp3-pile
Vérifier le résultat
tree
Aller dans le tp3
cd nfp121/tps/tp3-pile
Récupérer les fichiers du tp3
wget \
    --mirror \
    --cut-dirs=4 \
    --accept "*.java" \
    --accept ApplettePile.html \
    --no-parent \
    --no-host-directories \
http://larzac.info/cnam/nfp121/tps/tp3-pile/current/
Vérifier le résultat
tree
Aller dans bin/ et récupérer le jar pour JUnit
cd ../../bin/
wget http://larzac.info/cnam/nfp121/bin/junit-3.8.2.jar
Aller dans tps/ ; récupérer les scripts de compilation et de run java ; vérifier le résultat :
cd ../tps/
wget http://larzac.info/cnam/nfp121/tps/compile http://larzac.info/cnam/nfp121/tps/run http://larzac.info/cnam/nfp121/tps/test-run
ll
Rendre ces scripts exécutables ; vérifier le résultat
chmod +x compile run test-run 
ll
On peut regarder le script de compilation :
vi compile
# Pour sortir de vi, taper :q

TP3

Compiler la question 1 :
./compile tp3-pile/current/question1/PilePleineException.java 
./compile tp3-pile/current/question1/PileVideException.java 
./compile tp3-pile/current/question1/Pile.java 
./compile tp3-pile/current/question1/PolygoneRegulier.java 
./compile tp3-pile/current/question1/PolygoneRegulierTest.java 
./compile tp3-pile/current/question1/PileTest.java 
./compile tp3-pile/current/question1/ApplettePile.java 
./compile tp3-pile/current/question1/UneUtilisation.java
Vérifier que les .class sont au bon endroit :
tree ../bin/
Exécuter question1.UneUtilisation et vérifier qu'on a bien l'erreur prédite dans l'ennoncé :
./run tp3-pile/current/question1/UneUtilisation.java 
Exécuter question1.ApplettePile et constater l'erreur
appletviewer tp3-pile/current/question1/ApplettePile.java 
De la même manière, compiler et exécuter les questions 2 et 3.