Déploiement java

Résolu
Signaler
Messages postés
135
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
7 avril 2012
-
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
-
Bonjour,

Dans le cadre d'un projet, j'ai développé une application. Cette application utilise entre autre un fichier de configuration. Pour le déploiement de l'application je voudrais donc avoir quelquechose du genre :

    - dossierDeMonAppli
              > monAppli.jar
              > monFichierDeConfig.ini

Comment puis je faire pour créer une installation propre ?

Merci d'avance

9 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Utilises ANT pour automatiser toutes ces tâches.
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

+1 pour ANT (il est très pratique pour compiler, générer un jar, créer une archive zip, exécuter une application (un script,  ou autre), etc...)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
135
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
7 avril 2012
1
Ok merci pour vos réponses, je vais tester ça
Messages postés
135
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
7 avril 2012
1
Bonjour,

J'ai donc testé ANT, ça fonctionne bien, j'ai réussi à faire ce que je voulais mais j'ai encore un petit souci et je ne sais pas comment le régler :

Grace à ANT, j'ai généré un JAR de mon application. Mais mon appli se sert elle meme d'autres JAR et je ne sais pas comment faire pour que gérer ces dépendances. Y a t il une technique avec ANT ?

J'ai essayé de mettre les jar dont se sert mon appli dans le même dossier que mon appli mais ça ne fonctionne pas, j'obtiens une exception NoClassDefFound qui pointe sur une des classes du jar dont dépend mon appli.

Une idée ?
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

recréer le manifest de ton jar en ajoutant les dépendances dans le champ Class-Path.

exemple :
<jar jarfile="le nom du jar" basedir="./bin">
  <manifest>
   
   
  </manifest>
</jar>

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
135
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
7 avril 2012
1
Voila ce que j'ai dans mon fichier build.xml :

   
       
       
       
       
       
       
   
        <target name="init">
            <!-- Create the build directory structure used by compile -->
            <mkdir dir="${build.dir}" />
          </target>
   
          <target name="compile" depends="init">
            <!-- Run javac to compile the source files -->
            <javac srcdir="${src.dir}" destdir="${build.dir}">
              <classpath>
                <!-- Include all jar files  -->
                <fileset dir="import">
                     
                </fileset>
              </classpath>
            </javac>
          </target>
        
   
        <!-- target lancée comme suit : "ant tacheJSA" dans la console -->
        <target name="tacheJSA" depends="compile">
           
            <!-- création d'un répertoire pour le JAR -->
            <mkdir dir="${dist.dir}"/>
            <mkdir dir="${dist.dir}/${ressources.dir}"/>
            <mkdir dir="${dist.dir}/${gram.dir}"/>
           
            <!-- Copie des fichiers de ressources nécessaires-->
            <copy file="ressources/config.ini" todir="${dist.dir}/${ressources.dir}"/>
            <copy file="ressources/rules.xml" todir="${dist.dir}/${ressources.dir}"/>
            <copy file="ressources/mots_clefs.xls" todir="${dist.dir}/${ressources.dir}"/>
           
            <!-- Copie des fichiers grammaires-->
            <copy file="ressources/DmlSQL2.g" todir="${dist.dir}/${gram.dir}"/>
            <copy file="ressources/SqlSQL2.g" todir="${dist.dir}/${gram.dir}"/>
            <copy file="ressources/DmlSQL2ImpTokenTypes.txt" todir="${dist.dir}/${gram.dir}"/>
            <copy file="ressources/SqlSQL2ImpTokenTypes.txt" todir="${dist.dir}/${gram.dir}"/>
           
            <!-- création du JAR -->
            <jar destfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">
                    <manifest>
                        <!-- on indique la classe principale du JAR-->
                       
                        <!-- on indique les jar dont on a besoin-->
                       
                    </manifest>
            </jar>   
       
        </target>
   

Mais dès que je lance l'appli via la commande "java -jar projet.jar" il me sort des erreurs de classNotFound en pointant sur une des classes des jar dont dépend mon projet.

Please help...
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>
</title>
<meta name="GENERATOR" content="OpenOffice.org 2.4 (Linux)" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
Salut,

met des espaces avant et
après les virgules dans le champs class-path.
Tel que tu as
renseigné le champ class-path les jar sont au même niveau que le
jar de l'application.
Si ce n'est pas le cas et qu'ils sont dans
un répertoire 'lib' (par exemple) il faut que tu mettes :

ATTENTION
: ne met pas d'anti slash, même si tu es sous windows













------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
135
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
7 avril 2012
1
De mieux en mieux, maintenant lorsque je lance mon jar, celui ci ne trouve pas ma classe main !!! Je vois pas le problème...

Ma classe main est pourtant JSAWithParameters qui se trouve dans le package main... ANT parvient à me créer mon JAR sans erreurs mais au moment où je lance le JAR j'ai l'erreur suivante :

"Exception in thread "main" java.lang.NoClassDefFoundError : main/JSAWithParameters
Caused by: java.lang.ClassNotFoundException : main.JSAWithParameters

<?xml version="1.0" encoding="UTF-8"?>

   
       
       
       
       
       
       
   
        <target name="init">
            <!-- Create the build directory structure used by compile -->
            <mkdir dir="${build.dir}" />
          </target>
   
          <target name="compile" depends="init">
            <!-- Run javac to compile the source files -->
            <javac srcdir="${src.dir}" destdir="${build.dir}" />
          </target>
        
   
        <!-- target lancée comme suit : "ant tacheJSA" dans la console -->
        <target name="tacheJSA" depends="compile">
           
            <!-- création d'un répertoire pour le JAR -->
            <mkdir dir="${dist.dir}"/>
            <mkdir dir="${dist.dir}/${ressources.dir}"/>
            <mkdir dir="${dist.dir}/${gram.dir}"/>
           
            <!-- Copie des fichiers de ressources nécessaires-->
            <copy file="ressources/config.ini" todir="${dist.dir}/${ressources.dir}"/>
            <copy file="ressources/rules.xml" todir="${dist.dir}/${ressources.dir}"/>
            <copy file="ressources/mots_clefs.xls" todir="${dist.dir}/${ressources.dir}"/>
           
            <!-- Copie des fichiers grammaires-->
            <copy file="ressources/DmlSQL2.g" todir="${dist.dir}/${gram.dir}"/>
            <copy file="ressources/SqlSQL2.g" todir="${dist.dir}/${gram.dir}"/>
            <copy file="ressources/DmlSQL2ImpTokenTypes.txt" todir="${dist.dir}/${gram.dir}"/>
            <copy file="ressources/SqlSQL2ImpTokenTypes.txt" todir="${dist.dir}/${gram.dir}"/>
           
            <!-- création du JAR nommé JSA-->
            <jar destfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">
                    <manifest>
                        <!-- on indique la classe principale du JAR-->
                       
                        <!-- on indique les jar dont on a besoin-->
                       
                    </manifest>
            </jar>
       
        </target>
   
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>
</title>
<meta name="GENERATOR" content="OpenOffice.org 2.4 (Linux)" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
Salut,

tu as regardé si dans le
jar tu as bien tout, et que son manifest soit bien renseigné
?

ARRRRRRRGGGGGG, c'est quoi ce C: dans ton Class-Path
?????????????????? jamais tu fais ça..... de plus java c'est
portable hors tes clients ne sont pas forcément TOUS sous windows
donc ton C:............... et même si tu brides java sous windows,
jamais tu install des fichiers à la racine du DD d'un client... au
minimum tu fais un répertoire lib (ou autre) dans ton projet et tu y
colle le tout..... une application n'est pas censé s'installer à la
sauvage en mettant des fichiers partout... elle est plutôt censé
rester dans son sandbox.











------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO