J'ai le problème suivant. J'ai un projet Java dans mon NetBeans IDE 6.8. Lorsque je le compile et qu'il génère un fichier .jar contenant tout ce qui est possible, le fichier META-INF n’est pas correct. Il ne contient pas la classe à exécuter - avec la méthode main ().
Lorsque je clique sur le bouton Exécuter à l'intérieur de l'EDI, tout fonctionne. Les paramètres du projet sont également définis de manière appropriée: ils pointent vers une classe de mon projet.
J'ai essayé d'ajouter un dossier META-INF avec un fichier manifeste mais je n'y suis pas parvenu.
Est-il possible de le faire manuellement dans NetBeans, car j’ai constaté que si j’ajoutais la classe Main manquante dans le manifeste, tout fonctionnait.
(Je suppose que j'ai rencontré une sorte de bug ...)
//edit: Le résultat que je recherche est que je veux que le fichier jar créé avec la version de NetBeans soit exécutable avec la commande suivante:
Extrait de Documentation Sun :
Lorsque la classe principale est définie dans le fichier manifeste, vous pouvez exécuter l'application à partir de la ligne de commande: Java -jar app.jar
Je vais faire un résumé des solutions proposées et de celle qui m'a aidé!
Après avoir lu ce rapport de bogue: bug dans la manière dont NetBeans 6.8 crée le jar pour un projet de bibliothèque Java.
Créer un fichier manifest.mf à la racine de mon projet
Éditez manifest.mf. Le mien ressemblait à ceci:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 16.3-b01 (Sun Microsystems Inc.)
Main-Class: com.example.MainClass
Class-Path: lib/lib1.jar lib/lib2.jar
Ouvrir le fichier /nbproject/project.properties
Ajouter une ligne
manifest.file=manifest.mf
Clean + Construction du projet
Maintenant, le .jar est construit avec succès.
Merci beaucoup vkraemer
Il semble que vous rencontriez un bogue dans la manière dont NetBeans 6.8 crée le fichier jar pour un projet de bibliothèque Java .
Le problème implique qu'il existe une solution de contournement.
Je n'ai pas été en mesure de vérifier cela avec NB 6.8 et/ou NetBeans 6.9-dev ...
Vous voudrez peut-être vous inscrire au site Web/outil de suivi des problèmes de NetBeans.org, mettre à jour le problème et ajouter votre "vote".
C'est simple.
C'est tout. J'espère que cela t'aides.
Dans la version 7.3, il suffit d'activer Propriétés/Construire/Compiler/Copier les bibliothèques dépendantes et la classe principale sera ajoutée au fichier manifeste lors de la construction en fonction de la cible sélectionnée.
N'hésitez pas, mais examinez vos fichiers de projet après avoir construit votre projet pour la première fois. Recherchez un fichier manifeste et choisissez Ouvrir avec le bloc-notes.
Ajouter la ligne:
Main-Class: package.myMainClassName
Où package
est votre paquet et myClassName
est la classe avec la méthode main(String[] args)
.
Ajouter manifest.file = manifest.mf dans project.properties et créer un fichier manifest.mf dans le répertoire du projet fonctionne correctement dans NB 6.9 et devrait également fonctionner dans NB 6.8.
J'ai lu et lu et lu et lu pour comprendre pourquoi je recevais une erreur de classe non trouvée, il s'avère que le fichier manifest.mf avait une erreur dans la ligne:
Main-Class: com.example.MainClass
J'ai corrigé l'erreur en allant dans Propriétés du projet dialogue (clic droit Fichiers du projet ), puis Exécuter et Classe principale et corriger ce que Netbeans avait décidé de mettre ici. Netbean a inséré le nom du projet à la place du nom de la classe. Aucune idée pourquoi. Probablement enivré sur muratina ...
C'est toujours un problème à partir de 7.2.1. Créez une bibliothèque parce que vous ne savez pas ce qu’elle fera si vous en faites une application et que vous êtes foutu.
Avez-vous trouvé comment résoudre ce problème? Editez nbproject/project.properties
, modifiez la ligne suivante en false comme indiqué:
mkdist.disabled=false
Après cela, vous pouvez changer la classe principale dans les propriétés et cela sera reflété dans le manifeste.
Le vrai problème est de savoir comment Netbeans JAR gère ses projets. Le "Class-Path:" dans le fichier Manifest n'est pas nécessaire lors de la publication de votre programme pour que d'autres puissent l'utiliser. Si vous avez une bibliothèque externe ajoutée à Netbeans, elle agit comme un paquet. Je vous suggère d'utiliser un programme tel que WinRAR pour afficher les fichiers dans le fichier jar et ajouter vos bibliothèques sous forme de packages directement dans le fichier jar.
A quoi devrait ressembler l'intérieur du fichier jar:
MyProject.jar
Manifest.MF
Main-Class: mainClassFolder.Mainclass
mainClassFolder
Mainclass.class
packageFolder
IamUselessWithoutMain.class