alors j'ai ce qu'il te faut :)
Je biens de me mettre a Java pour ma culture perso et je developpe "a la main" pour comprendre et maitriser toutes les etapes de la conceptions. Les IDE masquent beaucoup de choses ...
J'ai monté un ficheir "compile.bat" pour faciliter la compilation/Test.
LA structrure du programme :
Citation:
-c:\Java
|_ monappli
|_src
| |_monappli
| | |_forms
| | |_units
| |_malib
|_bin
| |_monappli
| | |_forms
| | |_units
| |_malib
| |_META-INF
|_out
donc :
- c:\java est le repertoire de base ou je met les sources de mes projets.
- mon appli contient le projet relatif a mon application "monappli"
- src contient les ficheirs sources java
- bin les fichier "class"
- out les fichiers "jar"
- dans src/bin, "monappli" contient les classes relative a l'applciation et "lib" celles relative a d'eventuelles librairies secondaires (lib etant le nom de la ou des libraires). Forms contien les classes fenetres (JFame) et units les autres classes. On peut decouper differements (IDE, metier, etc ...) et donner d'autres noms, apres c'est la facon dont on organise son projet.
- META-INF dans "bin" contient le fichier manifest qui permet l'exectution auto de l'application.
dans le repetoire "monappli" principal, j'y glisse le fichier bat suivant :
Citation:
@ECHO OFF
CLS
DEL out\monappli.jar
DEL /S *.class
ECHO.
ECHO ******* COMPILATION *******
ECHO.
rem > : redirection sortie standard
rem 2> : redirection sortie erreur
cd src
(javac -d ..\bin monappli/Main.java) 2> ..\out\log.txt
cd ..
more out\log.txt
for /f %%i in ('find /c /v "" ^< out\log.txt') do set /a nbligne = %%i
if %nbligne% NEQ 0 goto END
ECHO.
ECHO ******** EXECUTION ********
ECHO.
cd bin\
jar cvfm ..\out\monappli.jar META-INF/MANIFEST.MF monappli/*.*
cd ..
out\monappli.jar
explication :
Citation:
DEL out\monappli.jar
DEL /S *.class
suppression des fichiers compilé : executable jar + tous les fichiers class dans tous les reperotoires (option /S)
Citation:
(javac -d ..\bin monappli/Main.java) 2> ..\out\log.txt
compilation de l'applciation :
- "-d ..\bin" defini le repertoire de destination des fichiers class
- "monappli/Main.java" est la commande de compilation de la classe principale, appelé Main chez moi.
- "2>" redirige la sortie "erreur" dans un fichier pour recuperer les erreurs dans un fichier log (utile plus tard)
Citation:
more out\log.txt
affiche le fichier log pour voir quand meme les erreurs de compilation ;)
Citation:
for /f %%i in ('find /c /v "" ^< out\log.txt') do set /a nbligne = %%i
if %nbligne% NEQ 0 goto END
regarde dans le fichier log, compte le nombre de lignes qui permet de verifier si il est vide ou non. Si non vide alors erreurs de compil, donc ne pas executer l'applciation.
Citation:
jar cvfm ..\out\monappli.jar META-INF/MANIFEST.MF monappli/*.*
[...]
out\monappli.jar[/CODE]
compilation du fichier JAR et execution automatique.
- "cvfm" : options de compilation, dont inclusion du manivest, afficher les etapes, etc ... cf aide de jar.
- "..\out\monappli.jar" : fichier jar de destination
- "META-INF/MANIFEST.MF" fichier manifest rendant le jar executable.
- "monappli/*.*" : inclure tous les fichiers et repertoires (Attention ! je me suis positionné dans "bin" juste avant !)
Remarque : pour faciliter les comandes, je me deplace dans les repertoires au cours du script. bien surveiller les apples a "cd" pour reconstituer les chemins si on n'utilise pas le script complet.
Pour info, voici le manifest :
Code:
1 2 3 4
| Manifest-Version: 1.0
Created-By: 1.4.1_01 (Sun Microsystems Inc.)
Main-Class: monappli.Main
Class-Path: . |
note :
Pour gerer les fichiers java dans plusieurs sous repertoire il faut :
- declarer : "package monappli.forms" par exemple dans les unites de "forms"
- declarer "import monappli.forms.MainForm" dans les fichiers ayant besoin de ces classes ...
Voila :)
Pour toutes infos supplementaire, n'hesite pas ;)