0
votes

EXCEPTION MAK NOCLASSDEFFONDERROR CLASSNOTFOUNDEXCEPTION MAIS MACH DÉPENDANCE EXISTES LA LIGNE DE COMMANDE

J'ai un problème avec Maven. J'ai inclus une dépendance en tant que telle dans mon pom.xml: xxx

J'utilise Intellij comme EDI, et je ne reçois aucune avertissement de compilation là-bas ou quoi que ce soit. J'utilise la ligne de commande pour exécuter les commandes Maven et je peux exécuter mvn installer compile package tout sans ennuis. < p> Cependant, lorsque j'essaie d'exécuter le pot comme tel: xxx

i obtenir cette erreur: xxx

clairement, Maven ne trouve pas ce chemin. J'ai essayé de supprimer le .m2, la reconstruction, et surtout tout ce que j'ai trouvé sur Stackoverflow, mais je ne peux pas trouver la question, ni obtenir la visibilité dans la question. Remarque, dans mon Intellij je peux voir la dépendance dans les bibliothèques externes.

J'ai également essayé d'utiliser l'ombre pour copier les dépendances de la bocal: xxx

suivi de laquelle i Reran MVN Clean Install Package, puis ma commande de construction. Pas de chance.

J'ai également essayé le plug-in Maven Assembly. Devinez quoi, pas de chance! xxx

J'ai confirmé que les dépendances ne sont même pas intégrées.

Merci!


3 commentaires

Construisez un pot avec des dépendances ou ajoutez les dépendances à votre point de classe en exécutant le pot.


Pouvez-vous élaborer comment je construis un pot avec des dépendances différentes de ce que je fais?


Lisez sur le plug-in Maven Shade.


3 Réponses :


0
votes

Maven fonctionne bien dans ce cas. Cependant, vous semblez manquer le point de dépendance.

Lorsque vous définissez une dépendance Maven l'utilise pendant la compilation (d'où aucune erreur d'Intellij et lorsque vous exécutez MVN Installez )

Mais cela ne signifie pas que la dépendance est placée dans le pot.

Il existe des types d'applications d'emballage plus compliqués dans lesquels cela fonctionne en effet de ce type (les bocaux dépendants sont inclus dans l'artefact) par exemple l'application de démarrage à ressort, les archives Web (guerre), etc. Mais puisque vous compilez un pot régulier, il n'inclut que les classes de votre module et n'inclut pas les classes de la communication de la communication de la CSV dans ce cas.

Donc, afin de pouvoir exécuter cette application, vous devez choisir l'une des:


4 commentaires

Merci. Pourriez-vous donner un exemple de comment j'utiliserais le plugin de l'ombre pour accomplir cela? J'ai essayé d'utiliser ceci: MKKYONG.COM / Maven / Création-A-A-A-FLA-JAR-File-Maven-Shade-Plugin et avec les changements requis, cela n'a pas fonctionné pour moi.


J'ai aussi essayé ceci: Stackoverflow.com/questions/7502204/... avec la même erreur.


Essayez ceci: Stackoverflow.com/Questtions/36093084 / ... afin de vérifier que cela fonctionne que vous pouvez ouvrir le fichier jar avec quelque chose comme WinRar (et voir ce qui se trouve à l'intérieur, vous devriez pouvoir voir des packages pour la communication des Commons-CSV et notre propre module)


Les informations de chemin de construction Maven ne sont pas stockées par le compilateur dans le fichier JAR cible et aucune bonne solution unique n'a augmenté au fil des ans. C'est un point de douleur en Java.



-1
votes

HI Le problème est que lorsque le pot est créé créé, les dépendances en cours de téléchargement ne sont pas attachées au bocal exécutable, c'est pourquoi une erreur s'affiche que nous pouvons ajouter la section ci-dessous dans la balise de construction pour obtenir les dépendances attachées à Le pot exécutable et ensuite vous pouvez exécuter le pot avec la commande Java -Jar Maven-Assembly-Plugin Paquet unique ... WOW.DXDXDATAGENERATOR.App Jar-avec dépendances ->



0
votes

Comme mentionné dans les autres réponses, vous devez orienter vos dépendances dans votre jar exécutable (A.K.A. Uber-JAR). Vous mentionnez que vous avez essayé de deux manières: en utilisant l'assemblage maven avec un bocal descriptorref avec dépendances et le plug-in Maven Shade.

Première remarque globale: la configuration du plug-in Maven peut être définie dans un bloc Bloquer ou directement dans le PARTIE D'UN POM. Je suggérerais de les mettre dans le , et je suppose que vous les avez déjà mis là-bas, mais je ne peux pas vérifier cela puisque que vous ne saisis qu'une partie de cela dans votre question.

Lorsque vous utilisez le bocal avec dépendances Descriptorref dans le plug-in Maven Assembly, deux fichiers JAR seront créés dans votre dossier cible / : Stride-1.0-Snapshot. JAR et Stride-1.0-Snapshot-avec dépendances.jar. Vous devez utiliser le -with-dépendances.jar , donc exécuter Java -CP cible / stride-1.0-instantané-with-dépendances.jar com.myapp.maven.app

Le plug-in de l'ombre offre plus d'options que le plug-in Maven Assembly. Toutefois, dans le code que vous avez collé, vous n'avez pas lié à l'exécution du plug-in Maven Shade à la phase d'emballage du cycle de vie de Maven. Si vous exécutez un package MVN , vous ne verrez pas le plug-in Maven Shade dans dans le cadre des étapes de construction qui maven. Si vous avez l'air plus étroitement à guide MKKYONGS < / a>, vous verrez que vous devez inclure un package dans votre bloc.


0 commentaires