Comment configurer la classe principale dans le fichier manifest dans jar produit par le projet NetBeans
j'ai le problème suivant. J'ai un projet Java dans mon NetBeans IDE 6.8. Quand je compile et produit une .fichier jar contenant tout ce qui est possible, le META-INF n'est pas correct. Il ne contient pas la classe à exécuter - avec la méthode main ().
quand je clique sur le bouton Run à l'intérieur de L'IDE, tout fonctionne. Les paramètres du projet sont également placés dans la bonne direction - pointant vers une classe de mon projet.
j'ai essayé d'ajouter un dossier META-INF avec le fichier manifest mais je n'ai pas réussi.
est-ce qu'il y a un moyen de faire cela manuellement dans NetBeans, parce que j'ai trouvé que si j'ajoute la classe principale manquante dans le manifeste, tout fonctionne.
(je suppose que j'ai heurté une sorte de bug...)
/ / edit: Le résultat que je recherche est que je veux que le jar qui est créé avec la construction de NetBeans soit exécutable avec commande:
citation de Sun Documentation :
lorsque la classe principale est définie dans le fichier manifest, vous pouvez lancer l'application à partir de la ligne de commande:
java -jar app.jar
9 réponses
je vais faire un résumé des solutions proposées et celle qui m'a aidé!
après avoir lu ce rapport de bogue: bug dans la façon dont NetBeans 6.8 crée le jar pour un projet de bibliothèque Java.
-
créer un manifeste.mf fichier dans la racine de mon projet
-
Modifier manifeste.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.propriétés
-
ajouter la ligne
manifest.file=manifest.mf
-
Clean + de Construire du projet
Désormais la .le pot est de développer correctement.
Merci beaucoup vkraemer "1519360920
il semble que vous rencontriez un bug dans la façon dont NetBeans 6.8 crée le jar pour un projet de bibliothèque Java .
la question sous-entend qu'il y a une solution de rechange.
Je n'ai pas été en mesure de vérifier qu'avec NB 6.8 et/ou NetBeans 6.9-dev...
vous pouvez vous inscrire auprès du NetBeans.org site web / suivi de la question et mettre à jour la question et ajouter votre "vote".
c'est simple.
- clic droit sur le projet
- Aller à Propriétés
- Aller à Exécuter dans Catégories arbre
- définit la classe principale dans le panneau latéral droit.
- construire le projet
c'est tout. Espérons que cette aide.
En 7.3 suffit d'activer les Propriétés/Build/Package/Copie Dépendant des Bibliothèques et de la classe principale sera ajouté à manifester lors de la construction en fonction cible sélectionnée.
ajout du Manifeste.fichier=manifeste.mf dans le projet.propriétés et création de manifestes.mf fichier dans le répertoire du projet fonctionne bien en NB de 6,9 et devrait fonctionner également en NB 6.8.
il s'agit d'un problème qui se pose toujours au 7.2.1 . Créer une bibliothèque cause Vous ne savez pas ce qu'il fera si vous en faites une application et vous êtes vissé.
a trouvé comment corriger cela cependant. Modifier nbproject/project.properties
, changer la ligne suivante à false comme indiqué:
mkdist.disabled=false
Après cela, vous pouvez modifier la classe principale dans les propriétés, et il sera reflété dans le manifeste.
le vrai problème est comment Netbeans bloque ses projets. Le" chemin de classe: "dans le fichier de manifestes est inutile lors de la publication réelle de votre programme pour d'autres à utiliser. Si vous avez une Bibliothèque externe ajoutée dans Netbeans il agit comme un paquet. Je vous suggère D'utiliser un programme comme WINRAR pour afficher les fichiers dans le jar et ajouter vos bibliothèques sous forme de paquets directement dans le fichier jar.
à quoi doit ressembler l'intérieur du fichier jar:
MyProject.jar
Manifest.MF
Main-Class: mainClassFolder.Mainclass
mainClassFolder
Mainclass.class
packageFolder
IamUselessWithoutMain.class
je lis, je lis et je lis pour comprendre pourquoi je recevais une erreur de classe non trouvée, il s'avère que le manifeste .mf avait une erreur dans la ligne:
Main-Class: com.example.MainClass
j'ai corrigé l'erreur en allant à Propriétés du projet dialogue (clic droit fichiers du projet ), puis Run et classe principale et corrigé tout ce que Netbeans a décidé de mettre ici. Netbean insérer le nom du projet au lieu du nom de la classe. Aucune idée de pourquoi. Probablement en état d'ébriété sur muratina...
n'hésitez pas à consulter vos dossiers de projet après avoir construit votre projet pour la première fois. Recherchez un fichier de manifeste et choisissez Ouvrir avec bloc-notes.
ajouter la ligne:
Main-Class: package.myMainClassName
où package
est votre colis et myClassName
est la classe avec la méthode main(String[] args)
.