Je vais essayer de donner autant de détails que possible ici, pardonnez-moi si certains ne sont pas pertinents. J'ai deux projets en éclipse. Projet 1: com.myworkplace.parent, avec du code dans le package du même nom. Projet 2: com.myworkplace.child, avec le code dans le paquet du même nom (j'ai déplacé mon code dans ce paquet, à partir du paquetage par défaut, si cela fait une différence). Les deux sont situés dans mon dossier d'espace de travail et structurés de la façon dont vous attendez qu'ils soient, autant que je sache.Eclipse classpath et NoClassDefFoundError
J'ai ajouté child au chemin de génération de parent dans eclipse en utilisant Java Build Path -> Projects -> Add. Le fichier .classpath de parent contient l'entrée:
<classpathentry combineaccessrules="false" kind="src" path="/com.myworkplace.child"/>
ajouter une référence à une classe de com.myworkplace.child.Child dans parent, importer, compiler sans erreur, exécutez et obtenez:
java.lang.NoClassDefFoundError: com/myworkplace/child/Child
Ce qui donne? Edit: L'application parente est une application RCP, peut-être OSGI (je ne connais pas grand-chose à propos de RCP et d'autres choses liées). Un peu de googling m'amène à croire que cela pourrait avoir quelque chose à voir avec ça.
Ceci est correct. Si cela ne fonctionne pas, cliquez avec le bouton droit de la souris sur le projet dans le navigateur et sélectionnez l'option 'Mettre à jour le chemin de classe'. –
À droite, parent est un plugin RCP.L'enfant n'est pas et n'a rien à voir avec RCP. Donc je ne peux pas l'ajouter via les plugins requis. Mystérieusement, il manque également dans la liste des paquets qui peuvent être importés. J'ai réussi à exécuter l'application sans erreurs par une méthode: exporter l'enfant comme un pot et l'ajouter sous l'onglet d'exécution des propriétés du plugin. Laid. Quoi qu'il en soit, c'est une réponse assez bonne pour être acceptée. – jsn
@jsn Juste une recommandation amicale de quelque chose à considérer sans connaître les détails de votre situation: Vous devriez envisager de convertir le projet enfant en un plugin. La seule différence est l'ajout d'un fichier META-INF/manifest.mf (ou l'ajout de quelques entrées spécifiques à OSGi dans ce fichier si vous en avez déjà un). Le projet enfant sera toujours complètement utilisable en tant que fichier jar autonome (non-OSGi) à d'autres fins, et il permettra une intégration plus élégante avec l'application RCP parente. – ChrisH