Bonjour,

J'ai créé une librairie "librairie1" sous la forme d'un jar qui elle-même a besoin de l'API JEXCEL.

J'ai créé une classe "ConvertExcelToFlatFile" qui se charge d'exécuter une classe dans librairie1.

Si je place mes 2 librairies dans le même dossier que ma classe que j'exécute, cela fonctionne, mais pas avec mes jar (au moins cela fonctionne avec les jar décompressés, c'est déjà bien).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
java ConvertExcelToFlatFile
J'aimerai par contre placer mes 2 librairies dans un autre dossier, ./lib par exemple. J'ai vu qu'il fallait utilisé -cp ou -classpath pour spécifier l'emplacement des librairies. J'ai donc déplacer mes 2 libraires dans ./lib et écrit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
java -cp ./lib ConvertExcelToFlatFile
ou même

Code : Sélectionner tout - Visualiser dans une fenêtre à part
java -cp ./lib/librairie.jar ConvertExcelToFlatFile
Et c'est la qu'il me sort :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Exception in thread "main" java.lang.NoClassDefFoundError: librairie1/ExcelToFlatFileException
Caused by: java.lang.ClassNotFoundException: librairie1.ExcelToFlatFileException
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: ConvertExcelToFlatFile.  Program will exit.
J'ai essayé avec -classpath mais idem.

En plus de vouloir régler ce problème, j'aimerai au final utiliser les librairies en jar et non en dossier/sous-dossier/fichiers.

Merci d'avance pour votre aide.