Bonjour,

Je rencontre un problème relatif à l'exécution d'un jar en dehors d'éclipse. Je m'explique : je travaille sur un projet nécessitant un grand nombre de dépendances (environ une cinquantaine de jars). La compilation de mon projet se fait sous maven 2, mon POM étant paramétré pour me créer un fichier manifest contenant toutes les informations nécessaires (Jars du classpath, classe main du projet, etc..).
La compilation fonctionne bien, mon jar est correctement généré, avec un manifest correct.

Lorsque je lance l'exécution de mon jar à l'aide de la commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
java -jar mon_projet.jar
l'exécution du projet se lance correctement et les dépendances se font bien (typiquement, si je fait un appel à un logger définis dans la librairie log4j, l'appel se fait correctement).

Mon problème est le suivant : j'utilise le microcontainer JBoss afin de déployer des EJBs 3 en dehors d'un serveur d'application. La commande de déploiement de ce microcontainer est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
EJB3StandaloneBootstrap.scanClasspath("jar_contenant_les_EJBs_à_déployer");
Or, lorsque j'exécute ce projet dans éclipse, mon microcontainer trouve bien mon jar contenant mes EJBs à déployer, tandis que lorsque je l'exécute en dehors d'éclipse, mon projet ne voit pas cette dépendance. J'ai cherché à voir si la variable classpath était la même ou pas dans les deux types d'exécution (dans et en dehors d'éclipse), en intégrant la portion de code suivant dans les premières lignes de mon projet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Properties prop = System.getProperties();
        System.out.println("java.class.path now = " + prop.getProperty("java.class.path"));
Le problème semble donc venir de là : lorsque mon projet est exécuté dans Eclipse, ma variable ClassPath contient la liste des toutes mes dépendances (lib1.jar;lib2.jar, etc...) tandis que lorsque je l'exécute en dehors d'éclipse, ClassPath contient uniquement le jar de mon projet (mon_projet.jar) sans aucune dépendance (alors même qu'a l'exécution, les dépendances sont trouvées, je n'ai aucune ClassNotFoundException). Mon "EJBs jar" n'est donc pas trouvé par mon microcontainer car il n'est pas contenu dans le classpath. J'ai donc tenté d'exécuter mon projet en dehors d'éclipse en utilisant l'option -cp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
java -cp lib1.jar;lib2.jar -jar mon_projet.jar
ou l'option -classpath
Code : Sélectionner tout - Visualiser dans une fenêtre à part
java -classpath lib1.jar;lib2.jar -jar mon_projet.jar
cela n'a rien donné !

J'ai donc un jar qui s'exécute en dehors d'éclipse en arrivant à "linker" les librairies mais sans les inclure dans mon classpath, empêchant ainsi le microcontainer de fonctionner correctement.

Si vous avez une idée...
Merci !