NoClassDefFoundError (ant)

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 9 sept. 2011 à 13:51
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 9 sept. 2011 à 16:05
Bonjour tout le monde,

encore un énième blocage dans mon développement java ^^

Comme l'indique le titre de ce topic j'ai cette erreur (NoClassDefFoundError) qui est levée lors de l'exécution de mon applet (contenu dans un jar). Pas de souci à la compil', il trouve bien la librairie (autre jar) contenant cette classe incriminée. Mais à l'exécution j'ai toujours ce souci.

J'ai essayé de copier la librairie dans mon propre paquetage, mais ça ne change rien (je regarde l'archive générée et j'y retrouve bien mes lib, ainsi que leur référence dans les fichiers du manifest).

Ma question est donc simple : "Oh ! mais qu'est-ce que quoi ?"

Merci d'avance pour votre aide, en restant à votre disposition pour plus de précision

PS : j'espère avoir mis ça dans la bonne catégorie
PS2 : oui, j'ai cherché sur le forum si le souci était déjà apparu chez d'autres. Oui c'est bien le cas, mais je n'ai rien pu tirer de ces topics (pas de réponse, réponse incomplète, problème différent ...).

4 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
9 sept. 2011 à 13:57
Bonjour,

Peut être que le package que tu utilises fait appel à un autre package que tu n'as pas dans ton build path ??

Essayes de regarder les dépendances de ce package.
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
9 sept. 2011 à 14:09
Salut, et déjà merci pour ta réactivité :)

Je suis sûr de mes dépendances car j'avais oublié un jar au début, et ça braillait dès la compilation (pour info il s'agit des librairies org.apache.xml contenues dans xmlsec-1.4.5.jar et nécessitant commons-logging-1.1.jar).

D'après un topic que je viens de trouver sur developpez.net il ne serait pas possible d'embarquer des jar externes de cette manière. S'offriraient alors à moi deux possibilités :
- "déjarer" mes libs et les intégrer à mon code : est-ce légal ? performant ?
- utiliser un logiciel spécifique (ex. One-JAR) : quid de ma signature sur mon jar "métier" ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
9 sept. 2011 à 15:28
Alors je ne vois pas vraiment ce qui peut causer ce problème, si tu trouves une solution, fais le nous savoir.

"déjarer" mes libs et les intégrer à mon code : est-ce légal ? performant ?

Au sujet de la légalité, ca dépend des libraires. Il faut consulter les licences associées. Mais ce n'est pas différent de placer le jar dans le build path et de le ré-empaqueter dans un jar executable (au niveau license).

Au niveau de la performance, c'est idem. Le jar est juste un .zip des classes.
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
9 sept. 2011 à 16:05
Outre la licence, la librairie "déjarée ne sera plus signée numériquement par apache, mais possédera un signature propre à mon certificat. C'est là qu'était ma question en fait (à vue de nez la fondation apache devrait laissé libre d'usage sa librairie).

Et pour la performance, je me suis encore mal exprimé ^^ J'entendais par là : mon jar ne sera-t-il pas trop lourd ? En effet il s'agit d'une applet qui devra donc transiter sur un réseau (*).

En tout cas merci pour cette aide prompte et précise.
Là j'ai implémenté cette soluce et ça fonctionne tout bien :)

(*) petite question en rab pendant que je t'ai sous la main ^^ Existe-t-il une convention sur la taille maximale d'une applet ? La mienne en est à 600ko et je trouve ça un poil gros. Et si je jar avec un taux de compression plus élevé, est-ce que le temps gagné au transfert ne sera pas perdu à la décompression côté client ? Dois-je me dire "maintenant tout le monde a une bonne bécane" ou "maintenant tout le monde a une bonne connexion" ? ^^
0