Problème ClassNotFoundException avec java -cp
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:
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:
java -cp ./lib ConvertExcelToFlatFile
ou même
Code:
java -cp ./lib/librairie.jar ConvertExcelToFlatFile
Et c'est la qu'il me sort :
Code:
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.