Runnable JAR ne fonctionne pas avec référencé bibliothèques
Je veux créer un exécutable JAR qui incluent référencé bibliothèques, à savoir jackson, dans eclipse via l'exportation. Il y gras bocal qui semble être le goto solution avant l'Éclipse offerts à l'exportation pour runnable JAR.
De cette question, la première option serait ce que je suis à la recherche pour. Depuis il est pour le moment un petit projet, il ne serait pas un problème d'avoir toujours tout ensemble (et en plus c'est plus facile pour moi puisque je viens juste de commencer avec des Bocaux, runnables et jnlp)
Lorsque je tente de le lancer, il y a une fenêtre d'alerte disant qu'il y avait un problème et d'essayer de le trouver dans la console (que je n'arrive pas à l'ouvrir).
Si je supprimer toute utilisation de cette bibliothèque référencée tout fonctionne parfaitement (sauf la partie que ce n'est pas de faire ce que je veux). La fenêtre se présente de la façon dont j'ai conçu, mais pas de la fonctionnalité sans la bibliothèque.
Je n'ai même pas une trace de la pile pour aider avec le problème. J'ai créé d'autres projets sans référencé bibliothèques et tout va bien. Donc j'ai à peu près rétréci vers le bas.
Depuis que j'ai laisser Eclipse gérer l'exportation et tout et tout, je ne suppose pas que vous devez le manifeste pour voir si c'est correct. Toutes les questions que vous pourriez avoir, je vais vous donner les informations dont vous avez besoin. Il va sans dire que le projet s'exécute directement à partir d'Eclipse.
Eclipse
Version: Indigo Service Release 2
Build id: 20120216-1857
Modifier suivant Baqueta's réponse
Ce qui se passe quand je le fais c'est que je reçois une coutume RuntimeException. Je suis un peu dérouté ici. Voici une explication simple de mon code.
J'ai une classe utilitaire (UtilityJSON) qui utilise la bibliothèque référencée (jackson). Le constructeur de cette classe utilitaire instancier un objet défini dans la bibliothèque référencée, appelons-le mappeur.
Une méthode de UtilityJSON utilise une méthode de "mapper'. À ce stade, l'exception est levée. Pourquoi je suis perplexe, c'est que de "mapper" est instancié avec succès, mais à l'aide de sa méthode lève une exception. Si le pot n'arrivais pas à trouver de référence de la bibliothèque, il ne pourrait probablement pas créer l'objet "mapper'. Mais l'exécution du projet à partir d'Eclipse est toute fine.
Est-il possible de débogage lors de l'exécution d'un fichier exécutable jar? Peut-être l'écho de quelque chose dans la console.
Edit 2
J'ai peut-être trouvé l'erreur. Mon programme lit un *.fichier txt dans un dossier à l'intérieur du projet. Lorsque l'on explore le contenu du bocal, je vois que ce dossier n'a pas été inclus, ainsi, l'exception. Donc la question devient alors: comment puis-je inclure ce dossier? C'est dans le dossier racine du projet.
java -jar <your jar name>.jar
et il devrait vous dire ce qui ne va pas...Hé là, désolé, j'ai raté votre réponse. Voir mon edit s'il vous plaît.
De ce que je comprends que vous essayez de le lancer à partir de l'explorateur, et on dirait qu'elle est en train de mourir avant même qu'elle ne commence la console. Vous obtiendrez probablement plus de renseignements par le lancer depuis la ligne de commande. Dans cmd (ou l'équivalent) dans le dossier contenant le pot et le type
java -jar <yourjarname>.jar
. Il sera, j'espère vous donner quelques informations utiles sur pourquoi il ne pouvait pas lancer...Pas d'Explorer, tout le terminal (sur un Mac). Couru java-jar Test.jar et j'obtiens une exception dans le terminal. Voir mon deuxième édition. Semble que le problème pourrait ne pas être là où je pensais.
OriginalL'auteur Chamane | 2012-04-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer les suivantes:
MODIFIER
Pour répondre à vos questions à jour:
Dans Eclipse, trouver l' *.txt fichier dans l'Explorateur de packages. Cliquez-droit dessus et sélectionnez " Build Path->Ajouter au Build Path. Ensuite, suivez les instructions ci-dessus pour vous assurer que le fichier est inclus dans le Pot. Enfin, effectuez un nettoyage et à la reconstruction.
Si vous allez jamais ajouter plus de ressources, il est de pratique courante (et de bon sens!) avoir un dossier de ressources (souvent appelé 'res'). Vous pouvez ensuite ajouter de la totalité du dossier sur le chemin de génération, de sorte que toutes les ressources y sont incluses dans le Pot.
Yup, permettra de sélectionner la bonne réponse dès que je l'obtenir pour fonctionner. Il ne fait sens d'avoir un dossier de ressources. J'ai créé un et tout déplacé. - Je mettre à jour le chemin que j'ai utiliser pour ouvrir les fichiers et tous mes JUnit sont couronnées de succès. 'src' a été ajouté à Construire le Chemin, mais le pot est toujours pas en cours d'exécution, indiquant que le fichier n'a pas pu être ouvert (aucun fichier ou répertoire). De toute évidence, je suis près à le faire fonctionner. Donc dès qu'il fait, je vais fermer ce problème.
Merci beaucoup, tout fonctionne maintenant. J'ai eu à utiliser les this même si je n'ai aucune idée pour le moment pourquoi. Pour le faire fonctionner, j'ai également eu à déplacer mon *.les fichiers txt directement dans le paquet, où ils sont utilisés, ce qui est absolument horrible. Il y a sûrement une autre solution à cela et je vais continuer à chercher. Comme pour l'inclusion de la bibliothèque référencée, tout est bien. Je vous remercie encore.
Ravi de vous aider. Si vous ne pouvez pas travailler pour vous-même ce qui se passe avec les chemins d'accès dans votre compilé Pot, je te suggère de chercher sur ici. Si vous ne pouvez pas trouver quelque chose qui ressemble à votre problème, alors vous aurez envie d'en ouvrir une autre question. Bonne chance!
Si quelqu'un a un problème similaire, j'ai posté ce question. Il y a encore des problèmes à résoudre sur cette question, mais il y a quelques réponses.
OriginalL'auteur vaughandroid
Permettre à la console java par écrit
dans un terminal. Fermez le Cache Viewer et cliquez sur l'onglet avancé. Il y ouvrir Java-Console et cliquez sur "activer la console".
Qu'est-ce que la boîte de dialogue d'erreur du message que vous recevez?
Ne pas connaître l'exacte traduction du français, mais c'est quelque chose comme: "Impossible de lancer le fichier Test.jar". Recherche dans la console les éventuels messages d'erreur.
OriginalL'auteur Stefan